diff --git a/.circleci/config.yml b/.circleci/config.yml index efc3cc25f..c86bbc606 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,751 +1,99 @@ -version: 2 +version: 2.1 +commands: + set_environment_vars: + steps: + - run: + command: | + echo "export REPO_URL=https://github.com/ysurac/openmptcprouter" >> $BASH_ENV 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 - + build: environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: x86_64 - - OMR_KERNEL: 5.4 - - working_directory: ~/ - + REPO_URL: https://github.com/ysurac/openmptcprouter + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }} + OMR_FEED_URL: https://github.com/ysurac/openmptcprouter-feeds + OMR_TARGET: << parameters.OMR_TARGET >> + OMR_KERNEL: << parameters.OMR_KERNEL >> + OMR_HOST: ${{ secrets.OMR_HOST }} + OMR_PORT: ${{ secrets.OMR_PORT }} + SOURCE_BRANCH: ${{ steps.branch_name.outputs.SOURCE_BRANCH }} + SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }} + ARGS: -av --delete-after + TARGET: deploy/release/${{steps.branch_name.outputs.SOURCE_TAG}}/${{matrix.OMR_TARGET}} + SOURCE: ${{ steps.branch_name.outputs.SOURCE_NAME }} + KEY: ${{ secrets.PRIVATE_KEY }} + USER: deploy + HOST: ${{ secrets.OMR_DEPLOY_HOST }} + PORT: ${{ secrets.OMR_DEPLOY_PORT }} + docker: + - image: dkrecruseastamazonawscom/circlecigolangpr:current 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 - + - checkout + - set_environment_vars + - run: + command: | + echo "SOURCE_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + echo "WORKSPACE=${GITHUB_WORKSPACE}" >> $GITHUB_OUTPUT + - run: + name: Prepare + command: | + sudo apt-get update + sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext + git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 + subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev + texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake + libtool autopoint device-tree-compiler python3-pyelftools + - run: + name: Free disk space + command: | + df -h + sudo swapoff -a >/dev/null 2>&1 || true + sudo rm -f /swapfile >/dev/null 2>&1 || true + sudo apt-get autoremove -y >/dev/null 2>&1 || true + sudo apt-get autoclean -y >/dev/null 2>&1 || true + sudo rm -rf "/usr/local/share/boost" >/dev/null 2>&1 || true + sudo rm -rf "$AGENT_TOOLSDIRECTORY" >/dev/null 2>&1 || true + sudo rm -rf /usr/share/dotnet >/dev/null 2>&1 || true + sudo rm -rf /usr/local/lib/android >/dev/null 2>&1 || true + sudo rm -rf /opt/ghc >/dev/null 2>&1 || true + sudo docker rmi $(docker images -qf "dangling=true") >/dev/null 2>&1 || + true + df -h + - run: + command: | + git clone $REPO_URL omr + if [ "$SOURCE_NAME" != "develop" ]; then + cd omr + pwd + git fetch + git checkout master + else + cd omr + git checkout develop + fi + git pull + pwd + OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare + {tools,toolchain}/install -j$(nproc) || OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" + sh build.sh prepare {tools,toolchain}/install -j1 V=s + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} + -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} + -j1 V=s + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j$(nproc) + || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install + -j1 V=s + mv ${OMR_TARGET}/${OMR_KERNEL}/source/bin ${GITHUB_WORKSPACE}/ + - store_artifacts: + path: /home/runner/work/omr/${{ matrix.OMR_TARGET }}/${{ matrix.OMR_KERNEL + }}/source/bin workflows: - version: 2 - main: + openmptcprouter: 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 + - build: + matrix: + parameters: + OMR_TARGET: ["bpi-r1","bpi-r2","bpi-r64","rpi2","rpi4","wrt32x","espressobin","r2s","rpi3","wrt3200acm","x86","x86_64","ubnt-erx","r4s","r7800","rutx12","rutx50","r5s","qnap-301w","rpi5","z8102ax_128m"] + OMR_KERNEL: ["5.4","6.1","6.6"] + \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8ebdbeb63..837a083b9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,13 +3,13 @@ on: [push] env: REPO_URL: 'https://github.com/ysurac/openmptcprouter' - OMR_KERNEL: '5.4' jobs: build: strategy: matrix: - OMR_TARGET: [bpi-r2, bpi-r64, rpi2, rpi4, wrt32x, espressobin, r2s, rpi3, wrt3200acm, x86, x86_64] + OMR_TARGET: [bpi-r1, bpi-r2, bpi-r3, bpi-r4, bpi-r4-poe, bpi-r64, rpi2, rpi4, wrt32x, espressobin, r2s, rpi3, wrt3200acm, x86, x86_64, ubnt-erx, r4s, r7800, rutx12, rutx50, r5s, qnap-301w, rpi5, z8102ax_128m, z8102ax_64m, z8102ax-emmc, gl-mt6000, gl-mt3000, gl-mt2500, r5c, z8109ax_128m] + OMR_KERNEL: [6.6, 6.12] runs-on: ubuntu-latest continue-on-error: true @@ -17,14 +17,18 @@ jobs: - name: Branch name id: branch_name run: | - echo ::set-output name=SOURCE_NAME::${GITHUB_REF#refs/*/} - echo ::set-output name=SOURCE_BRANCH::${GITHUB_REF#refs/heads/} - echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/} - echo ::set-output name=WORKSPACE::${GITHUB_WORKSPACE} + echo "SOURCE_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + echo "WORKSPACE=${GITHUB_WORKSPACE}" >> $GITHUB_OUTPUT - name: Prepare run: | sudo apt-get update - sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler + sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler python3-pyelftools llvm clang + - if: matrix.OMR_KERNEL == '6.6' + name: Install LLVM + run: | + sudo apt-get install llvm clang - name: Free disk space run: | df -h @@ -34,6 +38,9 @@ jobs: sudo apt-get autoclean -y >/dev/null 2>&1 || true sudo rm -rf "/usr/local/share/boost" >/dev/null 2>&1 || true sudo rm -rf "$AGENT_TOOLSDIRECTORY" >/dev/null 2>&1 || true + sudo rm -rf /usr/share/dotnet >/dev/null 2>&1 || true + sudo rm -rf /usr/local/lib/android >/dev/null 2>&1 || true + sudo rm -rf /opt/ghc >/dev/null 2>&1 || true sudo docker rmi $(docker images -qf "dangling=true") >/dev/null 2>&1 || true df -h - name: Clone source code @@ -61,29 +68,33 @@ jobs: OMR_FEED_URL: https://github.com/ysurac/openmptcprouter-feeds SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} OMR_HOST: ${{ secrets.OMR_HOST }} OMR_PORT: ${{ secrets.OMR_PORT }} run: | - OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare {tools,toolchain}/install -j$(nproc) || OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare {tools,toolchain}/install -j1 V=s - #echo -e "${{ secrets.OMR_PRIVKEY }}" > $OMR_TARGET/source/key-build - #echo -e "${{ secrets.OMR_PUBKEY }}" > $OMR_TARGET/source/key-build.pub + OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare {tools,toolchain}/install -j$(nproc) || OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare {tools,toolchain}/install -j1 V=s + #echo -e "${{ secrets.OMR_PRIVKEY }}" > $OMR_TARGET/$OMR_KERNEL/source/key-build + #echo -e "${{ secrets.OMR_PUBKEY }}" > $OMR_TARGET/$OMR_KERNEL/source/key-build.pub - name: Build packages working-directory: ../../omr env: OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} run: | - make IGNORE_ERRORS=m -C $OMR_TARGET/source package/{compile,install,index} -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/source package/{compile,install,index} -j1 V=s + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} -j1 V=s - name: Build image working-directory: ../../omr env: OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} run: | - make IGNORE_ERRORS=m -C $OMR_TARGET/source target/install -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/source target/install -j1 V=s + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j1 V=s - name: Upload artifacts - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: ${{ matrix.OMR_TARGET }} - path: /home/runner/work/omr/${{ matrix.OMR_TARGET }}/source/bin + path: /home/runner/work/omr/${{ matrix.OMR_TARGET }}/${{ matrix.OMR_KERNEL }}/source/bin + overwrite: true - if: steps.branch_name.outputs.SOURCE_BRANCH == '' name: Deploy - Create directory uses: ysurac/ssh-action@master @@ -98,6 +109,7 @@ jobs: user: deploy port: ${{ secrets.OMR_DEPLOY_PORT }} key: ${{ secrets.PRIVATE_KEY }} + args: -tt - if: steps.branch_name.outputs.SOURCE_BRANCH != '' name: Deploy - Create directory uses: ysurac/ssh-action@master @@ -107,18 +119,20 @@ jobs: SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }} with: command: | - mkdir -p deploy/${{env.SOURCE_BRANCH}}/${{env.OMR_KERNEL}}/${{matrix.OMR_TARGET}} + mkdir -p deploy/${{env.SOURCE_BRANCH}}/${{matrix.OMR_KERNEL}}/${{matrix.OMR_TARGET}} host: ${{ secrets.OMR_DEPLOY_HOST }} user: deploy port: ${{ secrets.OMR_DEPLOY_PORT }} key: ${{ secrets.PRIVATE_KEY }} + args: -tt - name: Move binaries for rsync working-directory: ../../omr env: OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }} run: | - mv ${OMR_TARGET}/source/bin ${GITHUB_WORKSPACE}/ + mv ${OMR_TARGET}/${OMR_KERNEL}/source/bin ${GITHUB_WORKSPACE}/ - if: steps.branch_name.outputs.SOURCE_BRANCH == '' name: Deploy - Upload via rsync uses: ysurac/action-rsync@master @@ -139,7 +153,7 @@ jobs: uses: ysurac/action-rsync@master env: ARGS: -av --delete-after - TARGET: deploy/${{ steps.branch_name.outputs.SOURCE_BRANCH }}/${{env.OMR_KERNEL}}/${{matrix.OMR_TARGET}} + TARGET: deploy/${{ steps.branch_name.outputs.SOURCE_BRANCH }}/${{matrix.OMR_KERNEL}}/${{matrix.OMR_TARGET}} SOURCE: ./bin/ KEY: ${{ secrets.PRIVATE_KEY }} USER: deploy diff --git a/README.md b/README.md index 6483e1fcf..e92835abd 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,21 @@ This is used to bypass a protocol *Description:* A middlebox detection tool +## Shortcut-FE +*Source:* [https://github.com/coolsnowwolf/lede/tree/master/package/lean/shortcut-fe](https://github.com/coolsnowwolf/lede/tree/master/package/lean/shortcut-fe) + +*Description:* Shortcut is an in-Linux-kernel IP packet forwarding engine. + + +## V2Ray +*Source:* [https://github.com/v2fly/v2ray-core](https://github.com/v2fly/v2ray-core) + +*Description:* A platform for building proxies to bypass network restrictions. + +This is used as proxy, alternative to Shadowsocks + + + # License [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FYsurac%2Fopenmptcprouter-feeds.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FYsurac%2Fopenmptcprouter-feeds?ref=badge_large) diff --git a/atinout/Makefile b/atinout/Makefile new file mode 100644 index 000000000..5457697e0 --- /dev/null +++ b/atinout/Makefile @@ -0,0 +1,57 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=atinout +PKG_VERSION=0.9.1 + +PKG_MAINTAINER:=Konstantine Shevlakov +PKG_LICENSE:=GPLv2 +PKG_LICENSE_FILES:=LICENSE + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/beralt/atinout.git +PKG_SOURCE_VERSION:=4013e8db4cd140c1df24bb90f929efeb9b61b238 + +PKG_SOURCE_SUBDIR:=$(PKG_NAME) +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=net + CATEGORY:=Network + SUBMENU:=Telephony + TITLE:=Send AT commands to a modem + URL:=http://atinout.sourceforge.net/ + MAINTAINER:=Adrian Guenter +endef + +define Package/$(PKG_NAME)/description + Atinout is a program that will execute AT commands in sequence and + capture the response from the modem. +endef + + +CONFIGURE_VARS += \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CC) +.c++" \ + CFLAGS="$(TARGET_CFLAGS) -Wall -DVERSION=\"\\\"$(PKG_VERSION)\\\"\"" \ + LDFLAGS="$(TARGET_LDFLAGS)" + +define Build/Configure + $(call Build/Configure/Default,--with-linux-headers=$(LINUX_DIR)) +endef + +define Build/Compile + @echo -e "\n=== Build/Compile ===" + $(CONFIGURE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) \ + all \ + +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/$(PKG_NAME) +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/bcm27xx-eeprom/Makefile b/bcm27xx-eeprom/Makefile index 8397130ae..8f37f3ecb 100644 --- a/bcm27xx-eeprom/Makefile +++ b/bcm27xx-eeprom/Makefile @@ -1,12 +1,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bcm27xx-eeprom -PKG_VERSION:=16bb29427f96dc8276a7102c0526154a1084bffd -PKG_RELEASE:=3 +PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/raspberrypi/rpi-eeprom/tar.gz/$(PKG_VERSION)? -PKG_HASH:=9bf42edbcd5ce38538750860c3c788af435206aa441b7d78cf88d094631dbb14 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/raspberrypi/rpi-eeprom +PKG_SOURCE_DATE:=2024-09-23 +PKG_SOURCE_VERSION:=c8fffcda5ae0f923857a73fedbeb07e81d2eb813 +PKG_MIRROR_HASH:=68d0eedd1aff573c2ea7071f89a5898292061ced96d7f98ea4a347dc16c8102c PKG_LICENSE:=BSD-3-Clause Custom PKG_LICENSE_FILES:=LICENSE @@ -18,15 +19,39 @@ include $(INCLUDE_DIR)/package.mk TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS) TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS) -define Package/bcm27xx-eeprom +define Package/bcm27xx-eeprom/Default SECTION:=utils CATEGORY:=Utilities - DEPENDS:=bcm27xx-userland +blkid +pciutils +python3-light +coreutils +coreutils-od +endef + +define Package/bcm27xx-eeprom +$(call Package/bcm27xx-eeprom/Default) TITLE:=BCM27xx EEPROM tools + DEPENDS:=bcm27xx-utils +blkid +coreutils +coreutils-od +mount-utils +pciutils +python3-light +endef + +define Package/bcm2711-eeprom +$(call Package/bcm27xx-eeprom/Default) + TITLE:=BCM2711 EEPROM tools + DEPENDS:=+bcm27xx-eeprom +endef + +define Package/bcm2712-eeprom +$(call Package/bcm27xx-eeprom/Default) + TITLE:=BCM2712 EEPROM tools + DEPENDS:=+bcm27xx-eeprom endef define Package/bcm27xx-eeprom/description - BCM27xx EEPROM tools. + BCM27xx EEPROM config and update tools. +endef + +define Package/bcm2711-eeprom/description + BCM2711 EEPROM config and update tools. +endef + +define Package/bcm2712-eeprom/description + BCM2712 EEPROM config and update tools. endef define Build/Compile @@ -43,16 +68,29 @@ define Package/bcm27xx-eeprom/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/rpi-eeprom-config $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rpi-eeprom-digest $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/rpi-eeprom-update $(1)/usr/bin +endef - $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader - $(CP) $(PKG_BUILD_DIR)/firmware/release-notes.md $(1)/lib/firmware/raspberrypi/bootloader +define Package/bcm2711-eeprom/install + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2711 + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2711/latest - $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader/critical - $(CP) $(PKG_BUILD_DIR)/firmware/critical/ $(1)/lib/firmware/raspberrypi/bootloader/ + $(CP) $(PKG_BUILD_DIR)/firmware-2711/release-notes.md $(1)/lib/firmware/raspberrypi/bootloader-2711 + $(CP) $(PKG_BUILD_DIR)/firmware-2711/latest/pieeprom-2024-09-05.bin $(1)/lib/firmware/raspberrypi/bootloader-2711/latest + $(CP) $(PKG_BUILD_DIR)/firmware-2711/latest/recovery.bin $(1)/lib/firmware/raspberrypi/bootloader-2711/latest + $(CP) $(PKG_BUILD_DIR)/firmware-2711/latest/vl805-000138c0.bin $(1)/lib/firmware/raspberrypi/bootloader-2711/latest +endef - $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader/stable - $(CP) $(PKG_BUILD_DIR)/firmware/stable/ $(1)/lib/firmware/raspberrypi/bootloader/ +define Package/bcm2712-eeprom/install + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2712 + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2712/latest + + $(CP) $(PKG_BUILD_DIR)/firmware-2712/release-notes.md $(1)/lib/firmware/raspberrypi/bootloader-2712 + $(CP) $(PKG_BUILD_DIR)/firmware-2712/latest/pieeprom-2024-09-23.bin $(1)/lib/firmware/raspberrypi/bootloader-2712/latest + $(CP) $(PKG_BUILD_DIR)/firmware-2712/latest/recovery.bin $(1)/lib/firmware/raspberrypi/bootloader-2712/latest endef $(eval $(call BuildPackage,bcm27xx-eeprom)) +$(eval $(call BuildPackage,bcm2711-eeprom)) +$(eval $(call BuildPackage,bcm2712-eeprom)) diff --git a/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch index a9c8faac7..e989ae1ff 100644 --- a/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch +++ b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch @@ -1,4 +1,4 @@ -From da37f7b051fe6833e25e78184cc9217dd4379187 Mon Sep 17 00:00:00 2001 +From a7c4e8f246dc58b4c83293b11f6443528065dc70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Mon, 23 Mar 2020 10:10:55 +0100 Subject: [PATCH] rpi-eeprom-update: OpenWrt defaults @@ -8,42 +8,30 @@ Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas --- - rpi-eeprom-update | 6 +++--- - rpi-eeprom-update-default | 5 +++-- - 2 files changed, 6 insertions(+), 5 deletions(-) + rpi-eeprom-update | 4 ++-- + rpi-eeprom-update-default | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) --- a/rpi-eeprom-update +++ b/rpi-eeprom-update -@@ -24,15 +24,15 @@ else - fi +@@ -25,7 +25,7 @@ fi - # May be used to select beta or stable releases instead of the default critical updates. --FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-critical} -+FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-stable} - FIRMWARE_IMAGE_DIR=${FIRMWARE_IMAGE_DIR:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}} + # Selects the release sub-directory + FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-default} -FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-/var/lib/raspberrypi/bootloader/backup} +FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-${FIRMWARE_ROOT}/backup} ENABLE_VL805_UPDATES=${ENABLE_VL805_UPDATES:-1} - USE_FLASHROM=${USE_FLASHROM:-0} - RECOVERY_BIN=${RECOVERY_BIN:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}/recovery.bin} - BOOTFS=${BOOTFS:-/boot} --VCMAILBOX=${VCMAILBOX:-/opt/vc/bin/vcmailbox} -+VCMAILBOX=${VCMAILBOX:-/usr/bin/vcmailbox} CM4_ENABLE_RPI_EEPROM_UPDATE=${CM4_ENABLE_RPI_EEPROM_UPDATE:-0} - - EXIT_SUCCESS=0 - EXIT_UPDATE_REQUIRED=1 + RPI_EEPROM_UPDATE_CONFIG_TOOL="${RPI_EEPROM_UPDATE_CONFIG_TOOL:-raspi-config}" --- a/rpi-eeprom-update-default +++ b/rpi-eeprom-update-default -@@ -1,8 +1,9 @@ +@@ -1,7 +1,7 @@ FIRMWARE_ROOT=/lib/firmware/raspberrypi/bootloader --FIRMWARE_RELEASE_STATUS="critical" -+FIRMWARE_RELEASE_STATUS="stable" - FIRMWARE_IMAGE_DIR="${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}" +-FIRMWARE_RELEASE_STATUS="default" -FIRMWARE_BACKUP_DIR="/var/lib/raspberrypi/bootloader/backup" ++FIRMWARE_RELEASE_STATUS="latest" +FIRMWARE_BACKUP_DIR="${FIRMWARE_ROOT}/backup" - BOOTFS=/boot - USE_FLASHROM=0 EEPROM_CONFIG_HOOK= -+VCMAILBOX=/usr/bin/vcmailbox + + # BOOTFS can be set here to override auto-detection in rpi-eeprom-update diff --git a/bcm27xx-eeprom/patches/0002-rpi-eeprom-update-change-default-include-path.patch b/bcm27xx-eeprom/patches/0002-rpi-eeprom-update-change-default-include-path.patch new file mode 100644 index 000000000..2bfb0beb1 --- /dev/null +++ b/bcm27xx-eeprom/patches/0002-rpi-eeprom-update-change-default-include-path.patch @@ -0,0 +1,62 @@ +From fc552b1e5c503c530763e40d2b83df55c5c2e9a3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Wed, 25 Mar 2020 20:58:35 +0100 +Subject: [PATCH] rpi-eeprom-update: change default include path +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + rpi-eeprom-update | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/rpi-eeprom-update ++++ b/rpi-eeprom-update +@@ -6,8 +6,8 @@ set -e + + script_dir=$(cd "$(dirname "$0")" && pwd) + +-if [ -f /etc/default/rpi-eeprom-update ]; then +- . /etc/default/rpi-eeprom-update ++if [ -f /etc/bcm27xx-eeprom.conf ]; then ++ . /etc/bcm27xx-eeprom.conf + fi + + LOCAL_MODE=0 +@@ -439,7 +439,7 @@ checkDependencies() { + echo "Run with -h for more information." + echo + echo "To enable flashrom programming of the EEPROM" +- echo "Add these the following entries to /etc/default/rpi-eeprom-update" ++ echo "Add these the following entries to /etc/bcm27xx-eeprom.conf" + echo "RPI_EEPROM_USE_FLASHROM=1" + echo "CM4_ENABLE_RPI_EEPROM_UPDATE=1" + echo +@@ -526,7 +526,7 @@ The system should then boot normally. + + If /boot does not correspond to the boot partition and this + is not a NOOBS system, then the mount point for BOOTFS should be defined +-in /etc/default/rpi-eeprom-update by defining the BOOTFS variable. ++in /etc/bcm27xx-eeprom.conf by defining the BOOTFS variable. + + A backup of the current EEPROM config file is written to ${FIRMWARE_BACKUP_DIR} + before applying the update. +@@ -558,7 +558,7 @@ Options: + -u Install the specified VL805 (USB EEPROM) image file. + + Environment: +-Environment variables should be defined in /etc/default/rpi-eeprom-update ++Environment variables should be defined in /etc/bcm27xx-eeprom.conf + + EEPROM_CONFIG_HOOK + +@@ -630,7 +630,7 @@ must first be enabled by removing ENABLE + via usbboot. + + After enabling self-update set the CM4_ENABLE_RPI_EEPROM_UPDATE=1 environment +-variable or define it in /etc/default/rpi-eeprom-update. ++variable or define it in /etc/bcm27xx-eeprom.conf. + + N.B. If there is a power failure during SELF_UPDATE the EEPROM write may fail and + usbboot must be used to flash the bootloader EEPROM. SELF_UPDATE is not recommended diff --git a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch deleted file mode 100644 index 6aee93cf2..000000000 --- a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-change-default-include-path.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 6674d49dea0104031b3f54df4c7a356dc4307bb2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= -Date: Wed, 25 Mar 2020 20:58:35 +0100 -Subject: [PATCH] rpi-eeprom-update: change default include path -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Álvaro Fernández Rojas ---- - rpi-eeprom-update | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - ---- a/rpi-eeprom-update -+++ b/rpi-eeprom-update -@@ -6,8 +6,8 @@ set -e - - script_dir=$(cd "$(dirname "$0")" && pwd) - --if [ -f /etc/default/rpi-eeprom-update ]; then -- . /etc/default/rpi-eeprom-update -+if [ -f /etc/bcm27xx-eeprom.conf ]; then -+ . /etc/bcm27xx-eeprom.conf - fi - - LOCAL_MODE=0 -@@ -345,7 +345,7 @@ Options: - -u Install the specified VL805 (USB EEPROM) image file. - - Environment: --Environment variables should be defined in /etc/default/rpi-eeprom-update -+Environment variables should be defined in /etc/bcm27xx-eeprom.conf - - EEPROM_CONFIG_HOOK - diff --git a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-chmod-silent-f-is-not-supported.patch b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-chmod-silent-f-is-not-supported.patch new file mode 100644 index 000000000..0999eb9bf --- /dev/null +++ b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-chmod-silent-f-is-not-supported.patch @@ -0,0 +1,33 @@ +From 62ec3384358bda60269c131d3880795bc8cdc3ce Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Fri, 19 Feb 2021 10:54:23 +0100 +Subject: [PATCH] rpi-eeprom-update: chmod silent (-f) is not supported +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + rpi-eeprom-update | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/rpi-eeprom-update ++++ b/rpi-eeprom-update +@@ -220,7 +220,7 @@ applyRecoveryUpdate() + || die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}" + + # For NFS mounts ensure that the files are readable to the TFTP user +- chmod -f go+r "${BOOTFS}/pieeprom.upd" "${BOOTFS}/pieeprom.sig" \ ++ chmod go+r "${BOOTFS}/pieeprom.upd" "${BOOTFS}/pieeprom.sig" \ + || die "Failed to set permissions on eeprom update files" + fi + +@@ -231,7 +231,7 @@ applyRecoveryUpdate() + || die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin" + + # For NFS mounts ensure that the files are readable to the TFTP user +- chmod -f go+r "${BOOTFS}/vl805.bin" "${BOOTFS}/vl805.sig" \ ++ chmod go+r "${BOOTFS}/vl805.bin" "${BOOTFS}/vl805.sig" \ + || die "Failed to set permissions on eeprom update files" + fi + diff --git a/bcm27xx-eeprom/patches/0004-rpi-eeprom-config-replace-nano-with-vi-as-default-ed.patch b/bcm27xx-eeprom/patches/0004-rpi-eeprom-config-replace-nano-with-vi-as-default-ed.patch new file mode 100644 index 000000000..27543f6ac --- /dev/null +++ b/bcm27xx-eeprom/patches/0004-rpi-eeprom-config-replace-nano-with-vi-as-default-ed.patch @@ -0,0 +1,35 @@ +From 8d1e47c956ae10d1146114f7fcd4eb0d33187d08 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Tue, 16 Jan 2024 16:25:40 +0100 +Subject: [PATCH] rpi-eeprom-config: replace nano with vi as default editor +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + rpi-eeprom-config | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/rpi-eeprom-config ++++ b/rpi-eeprom-config +@@ -186,8 +186,8 @@ def edit_config(eeprom=None): + """ + Implements something like 'git commit' for editing EEPROM configs. + """ +- # Default to nano if $EDITOR is not defined. +- editor = 'nano' ++ # Default to vi if $EDITOR is not defined. ++ editor = 'vi' + if 'EDITOR' in os.environ: + editor = os.environ['EDITOR'] + +@@ -517,7 +517,7 @@ Operating modes: + + To cancel the pending update run 'sudo rpi-eeprom-update -r' + +- The default text editor is nano and may be overridden by setting the 'EDITOR' ++ The default text editor is vi and may be overridden by setting the 'EDITOR' + environment variable and passing '-E' to 'sudo' to preserve the environment. + + 6. Signing the bootloader config file. diff --git a/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch b/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch deleted file mode 100644 index cf8cddc40..000000000 --- a/bcm27xx-eeprom/patches/0004-rpi-eeprom-update-remove-chmod.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- a/rpi-eeprom-update 2020-11-05 21:58:02.247836497 +0100 -+++ b/rpi-eeprom-update 2020-11-05 21:58:36.911266307 +0100 -@@ -186,8 +186,8 @@ - || die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}" - - # For NFS mounts ensure that the files are readable to the TFTP user -- chmod -f go+r "${BOOTFS}/pieeprom.upd" "${BOOTFS}/pieeprom.sig" \ -- || die "Failed to set permissions on eeprom update files" -+ #chmod -f go+r "${BOOTFS}/pieeprom.upd" "${BOOTFS}/pieeprom.sig" \ -+ # || die "Failed to set permissions on eeprom update files" - fi - - if [ -n "${VL805_UPDATE_IMAGE}" ]; then -@@ -198,8 +198,8 @@ - || die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin" - - # For NFS mounts ensure that the files are readable to the TFTP user -- chmod -f go+r "${BOOTFS}/vl805.bin" "${BOOTFS}/vl805.sig" \ -- || die "Failed to set permissions on eeprom update files" -+ #chmod -f go+r "${BOOTFS}/vl805.bin" "${BOOTFS}/vl805.sig" \ -+ # || die "Failed to set permissions on eeprom update files" - fi - - cp -f "${RECOVERY_BIN}" "${BOOTFS}/recovery.bin" \ diff --git a/bcm27xx-utils/Makefile b/bcm27xx-utils/Makefile new file mode 100644 index 000000000..8f5d91da8 --- /dev/null +++ b/bcm27xx-utils/Makefile @@ -0,0 +1,66 @@ +# SPDX-License-Identifier: GPL-2.0-only + +include $(TOPDIR)/rules.mk + +PKG_NAME:=bcm27xx-utils +PKG_VERSION:=2024.10.25 +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/raspberrypi/utils.git +PKG_SOURCE_VERSION:=6a2a6becebbc38fde34a94386457ac8210f9119b +PKG_MIRROR_HASH:=a775c7ffb9fac2d798ec8e0a4c7707eb7133cbc9c4418a1cf9434f87c42c01bb + +PKG_FLAGS:=nonshared +PKG_BUILD_FLAGS:=no-lto + +PKG_LICENSE:=BSD-3-Clause +PKG_LICENSE_FILES:=LICENCE + +CMAKE_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +define Package/bcm27xx-utils + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=@TARGET_bcm27xx +libfdt + TITLE:=BCM27xx scripts and simple applications + PROVIDES:=bcm27xx-userland +endef + +define Package/bcm27xx-utils/description + BCM27xx scripts and simple applications. + Replaces bcm27xx-userland scripts and applications. +endef + +define Package/bcm27xx-utils/install + $(INSTALL_DIR) $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dtmerge $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dtoverlay $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dtparam $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepdump $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepflash.sh $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepmake $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kdtc $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/otpset $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/overlaycheck $(1)/usr/bin + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/bin/overlaycheck_exclusions.txt $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovmerge $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pinctrl $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/raspinfo $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vcgencmd $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vclog $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vcmailbox $(1)/usr/bin +endef + +$(eval $(call BuildPackage,bcm27xx-utils)) diff --git a/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch b/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch new file mode 100644 index 000000000..9dd6d9962 --- /dev/null +++ b/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch @@ -0,0 +1,255 @@ +From 0db3fb3119eda8c2360454c2a01f84602a879c38 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Tue, 16 Jan 2024 15:32:12 +0100 +Subject: [PATCH] raspinfo: adapt to OpenWrt +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + raspinfo/raspinfo | 186 ++++------------------------------------------ + 1 file changed, 13 insertions(+), 173 deletions(-) + +--- a/raspinfo/raspinfo ++++ b/raspinfo/raspinfo +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + # Some of the regex's used in sed + # Catch basic IP6 address "s/\([0-9a-fA-F]\{1,4\}:\)\{7,7\}[0-9a-fA-F]\{1,4\}/y.y.y.y.y.y.y.y/g" +@@ -6,147 +6,6 @@ + # IP4 d.d.d.d decimal "s/\([0-9]\{1,3\}\.\)\{3,3\}[0-9]\{1,3\}/x.x.x.x/g" + # mac address "s/\([0-9a-fA-F]\{2,2\}\:\)\{5,5\}[0-9a-fA-F]\{2,2\}/m.m.m.m/g" + +- +-display_info_drm() { +- # If running X then can use xrandr, otherwise +- # dump the /sys/class entries for the displays +- if command -v xrandr > /dev/null && +- DISPLAY=${DISPLAY:-:0} xrandr --listmonitors &>/dev/null; +- then +- echo "Running (F)KMS and X" +- echo +- +- DISPLAY=${DISPLAY:-:0} xrandr --verbose +- else +- echo "Running (F)KMS, console" +- echo +- +- for card in /sys/class/drm/card[0-9]-*; +- do +- echo $card +- +- # if kmsprint isn't installed print basic mode info +- if ! command -v kmsprint > /dev/null; then +- if [ -f $card/modes ]; +- then +- cat $card/modes +- else +- echo "No modes found" +- fi +- fi +- +- if [ -f $card/edid ]; +- then +- base64 $card/edid +- else +- echo "No EDID found" +- fi +- echo +- done +- fi +- +- # kmsprint is more useful, but not always installed +- echo +- if command -v kmsprint > /dev/null; then +- kmsprint +- echo +- kmsprint -m +- else +- echo "kmsprint is not installed. Install with: sudo apt install kms++-utils" +- fi +- +- echo +- +- # dump the /sys/class entries for the displays +- cardfound=0 +- for card in `seq 0 9`; +- do +- if sudo test -f "/sys/kernel/debug/dri/${card}/state"; +- then +- for hdmi in 0 1; +- do +- if sudo test -f "/sys/kernel/debug/dri/${card}/hdmi${hdmi}_regs"; +- then +- echo "HDMI${hdmi}: $(sudo cat /sys/kernel/debug/dri/$card/hdmi${hdmi}_regs | grep HOTPLUG)" +- fi +- done +- echo +- echo "/sys/kernel/debug/dri/$card/state:" +- sudo cat "/sys/kernel/debug/dri/$card/state" +- echo +- cardfound=1 +- fi +- done +- if [ "$cardfound" == "0" ]; +- then +- echo "kms state not found" +- fi +- echo +- +-} +- +-display_info_legacy() { +- # Legacy mode +- echo "Running Legacy framebuffer" +- echo +- +- for card in `seq 0 9`; +- do +- F="/dev/fb${card}" +- if test -e $F; +- then +- echo Framebuffer: $F +- fbset -s -fb $F +- fi +- done +- +- disps=`tvservice -l | awk '/Display Number/{print substr($3,1,1)}'` +- +- tmp=$(mktemp) +- +- for display in $disps +- do +- echo +- echo "Display: " $display +- +- tvservice -v $display -s +- tvservice -v $display -n +- tvservice -v $display -m CEA +- tvservice -v $display -m DMT +- +- echo +- tvservice -v $display -d $tmp > /dev/null +- base64 $tmp +- done +- +- rm $tmp +-} +- +-display_info() { +- # Check if we are running a KMS/DRM system +- +- if [ -d "/dev/dri" ]; +- then +- display_info_drm +- else +- display_info_legacy +- fi +-} +- +-audio_info() { +- aplay -l +- echo +- aplay -L +- echo +- systemctl --user status pipewire.socket pipewire.service pulseaudio.service pulseaudio.socket +- echo +- if command -v pactl > /dev/null; then +- pactl info +- else +- echo pactl not installed +- fi +-} +- + OUT=raspinfo.txt + + rm -f $OUT +@@ -163,8 +22,6 @@ echo + cat /etc/os-release | head -4 + echo + +-cat /etc/rpi-issue +-echo + uname -a + + cat /proc/cpuinfo | tail -3 +@@ -190,17 +47,6 @@ echo + cat /proc/swaps + + echo +-echo "Package version information" +-echo "---------------------------" +- +-apt-cache policy raspberrypi-ui-mods | head -2 +-apt-cache policy raspberrypi-sys-mods | head -2 +-apt-cache policy openbox | head -2 +-apt-cache policy lxpanel | head -2 +-apt-cache policy pcmanfm | head -2 +-apt-cache policy rpd-plym-splash | head -2 +- +-echo + echo "Networking Information" + echo "----------------------" + echo +@@ -212,21 +58,11 @@ echo "USB Information" + echo "---------------" + echo + +-lsusb -t +- +-echo +-echo "Display Information" +-echo "-------------------" +-echo +- +-display_info +- +-echo +-echo "Audio Information" +-echo "-------------------" +-echo +- +-audio_info ++if command -v lsusb > /dev/null; then ++ lsusb -t ++else ++ echo usbutils not installed ++fi + + echo + echo "config.txt" +@@ -250,7 +86,7 @@ echo "-----------------" + echo + + if command -v pinctrl > /dev/null; then +- sudo pinctrl 2>&1 ++ pinctrl 2>&1 + elif command -v raspi-gpio > /dev/null; then + raspi-gpio get 2>&1 + else +@@ -263,9 +99,9 @@ echo "------------------" + echo + + if command -v vcdbg > /dev/null; then +- sudo vcdbg log msg 2>&1 ++ vcdbg log msg 2>&1 + elif command -v vclog > /dev/null; then +- sudo vclog --msg 2>&1 ++ vclog --msg 2>&1 + else + echo "vcdbg not found" + fi +@@ -284,5 +120,9 @@ echo + echo "EEPROM" + echo "------" + echo +-sudo rpi-eeprom-update ++if command -v rpi-eeprom-update > /dev/null; then ++ rpi-eeprom-update ++else ++ echo bcm27xx-eeprom not installed ++fi + fi diff --git a/bcm27xx-utils/patches/0002-pinctrl-replace-reallocarray.patch b/bcm27xx-utils/patches/0002-pinctrl-replace-reallocarray.patch new file mode 100644 index 000000000..d0191f620 --- /dev/null +++ b/bcm27xx-utils/patches/0002-pinctrl-replace-reallocarray.patch @@ -0,0 +1,11 @@ +--- a/pinctrl/pinctrl.c 2024-07-02 14:14:31.113459219 +0200 ++++ b/pinctrl/pinctrl.c 2024-07-02 14:14:44.533241981 +0200 +@@ -220,7 +220,7 @@ + if (!gpio_num_is_valid(gpio)) + return 1; + +- poll_gpios = reallocarray(poll_gpios, num_poll_gpios + 1, ++ poll_gpios = realloc(poll_gpios, num_poll_gpios + 1 * + sizeof(*poll_gpios)); + new_gpio = &poll_gpios[num_poll_gpios]; + new_gpio->num = num; diff --git a/contributors/bdaylik.md b/contributors/bdaylik.md new file mode 100644 index 000000000..f83ea7d7c --- /dev/null +++ b/contributors/bdaylik.md @@ -0,0 +1,9 @@ +2024-03-22 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Baris Daylik https://github.com/bdaylik diff --git a/contributors/flesser.md b/contributors/flesser.md new file mode 100644 index 000000000..126dab7b5 --- /dev/null +++ b/contributors/flesser.md @@ -0,0 +1,9 @@ +2022-05-20 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Florian Karuhtz https://github.com/flesser diff --git a/contributors/ta264.md b/contributors/ta264.md new file mode 100644 index 000000000..06ed382e6 --- /dev/null +++ b/contributors/ta264.md @@ -0,0 +1,9 @@ +2022-08-26 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +ta264 https://github.com/ta264 diff --git a/contributors/yostyle.md b/contributors/yostyle.md new file mode 100644 index 000000000..621b22d52 --- /dev/null +++ b/contributors/yostyle.md @@ -0,0 +1,9 @@ +2023-05-23 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Yoan Pintas https://github.com/yostyle diff --git a/cryptodev-linux/Makefile b/cryptodev-linux/Makefile new file mode 100644 index 000000000..77b7fbf30 --- /dev/null +++ b/cryptodev-linux/Makefile @@ -0,0 +1,57 @@ +# +# Copyright (C) 2014 OpenWrt.org +# Copyright (C) 2023 Yannick Chabanois (Ycarus) for OpenMPTCProuter +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=cryptodev-linux +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/$(PKG_NAME)/$(PKG_NAME).git +PKG_SOURCE_VERSION:=277d4574c10bb8e16ab6ab3f38b8e1cb6cd6c678 +PKG_VERSION:=1.14.20241010 +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=COPYING + +PKG_MAINTAINER:=Yannick Chabanois + + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/cryptodev + SUBMENU:=Cryptographic API modules + TITLE:=Driver for cryptographic acceleration + URL:=http://cryptodev-linux.org/ + DEPENDS:=+kmod-crypto-authenc +kmod-crypto-hash + FILES:=$(PKG_BUILD_DIR)/cryptodev.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,50,cryptodev) + MODPARAMS.cryptodev:=cryptodev_verbosity=-1 +endef + +define KernelPackage/cryptodev/description + This is a driver for that allows to use the Linux kernel supported + hardware ciphers by user-space applications. +endef + +define Build/Configure +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + $(KERNEL_MAKE_FLAGS) \ + KERNEL_DIR="$(LINUX_DIR)" +endef + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR)/usr/include/crypto + $(CP) $(PKG_BUILD_DIR)/crypto/cryptodev.h $(STAGING_DIR)/usr/include/crypto/ +endef + +$(eval $(call KernelPackage,cryptodev)) diff --git a/dsvpn/Makefile b/dsvpn/Makefile index c3215e93a..c025e7ad9 100644 --- a/dsvpn/Makefile +++ b/dsvpn/Makefile @@ -8,11 +8,15 @@ include $(TOPDIR)/rules.mk PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/jedisct1/dsvpn.git -PKG_SOURCE_VERSION:=3b99d2ef6c02b2ef68b5784bec8adfdd55b29b1a +#PKG_SOURCE_URL:=https://github.com/jedisct1/dsvpn.git +PKG_SOURCE_URL:=https://github.com/Ysurac/dsvpn.git +#PKG_SOURCE_VERSION:=3b99d2ef6c02b2ef68b5784bec8adfdd55b29b1a +PKG_SOURCE_VERSION:=4333aa705efd9c86c76809614d20dc5ebf43da7f PKG_NAME:=dsvpn -PKG_VERSION:=0.1.4-$(PKG_SOURCE_VERSION) +PKG_VERSION:=0.1.5 PKG_RELEASE:=1 +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE include $(INCLUDE_DIR)/package.mk diff --git a/dsvpn/files/init b/dsvpn/files/init index 250c409df..a43583913 100755 --- a/dsvpn/files/init +++ b/dsvpn/files/init @@ -29,6 +29,16 @@ validate_section() { 'externalip:string:auto' } +version_over_5_4() { + MAJOR_VERSION=$(uname -r | awk -F '.' '{print $1}') + MINOR_VERSION=$(uname -r | awk -F '.' '{print $2}' | awk -F '-' '{print $1}') + if [ $MAJOR_VERSION -ge 5 ] && [ $MINOR_VERSION -gt 13 ] || [ $MAJOR_VERSION -gt 5 ] ; then + return 0 + else + return 1 + fi +} + start_instance() { local enable key host port dev @@ -49,7 +59,7 @@ start_instance() { key="" if [ "$(uci -q get network.omrvpn)" != "" ] && [ "$(uci -q get network.omrvpn)" != "$dev" ]; then - uci -q set network.omrvpn.ifname=$dev + uci -q set network.omrvpn.device=$dev uci -q commit fi @@ -58,6 +68,10 @@ start_instance() { _log "starting ${PROG_NAME} ${1} instance $*" + if version_over_5_4; then + PROG="mptcpize run ${PROG}" + fi + procd_open_instance procd_set_param command ${PROG} ${mode} \ diff --git a/dsvpn/patches/nofirewall.patch b/dsvpn/patches/nofirewall.patch deleted file mode 100644 index 89c866640..000000000 --- a/dsvpn/patches/nofirewall.patch +++ /dev/null @@ -1,65 +0,0 @@ ---- a/src/os.c 2019-12-06 19:49:50.323898270 +0100 -+++ b/src/os.c 2019-12-06 19:54:20.987206244 +0100 -@@ -445,24 +445,28 @@ - #ifdef __linux__ - static const char - *set_cmds[] = -- { "sysctl net.ipv4.ip_forward=1", -- "ip addr add $LOCAL_TUN_IP peer $REMOTE_TUN_IP dev $IF_NAME", -+ { "ip addr add $LOCAL_TUN_IP peer $REMOTE_TUN_IP dev $IF_NAME", - "ip -6 addr add $LOCAL_TUN_IP6 peer $REMOTE_TUN_IP6/96 dev $IF_NAME", - "ip link set dev $IF_NAME up", -+#ifndef NO_DEFAULT_FIREWALL -+ "sysctl net.ipv4.ip_forward=1", - "iptables -t raw -I PREROUTING ! -i $IF_NAME -d $LOCAL_TUN_IP -m addrtype ! " - "--src-type LOCAL -j DROP", - "iptables -t nat -A POSTROUTING -o $EXT_IF_NAME -s $REMOTE_TUN_IP -j MASQUERADE", - "iptables -t filter -A FORWARD -i $EXT_IF_NAME -o $IF_NAME -m state --state " - "RELATED,ESTABLISHED -j ACCEPT", - "iptables -t filter -A FORWARD -i $IF_NAME -o $EXT_IF_NAME -j ACCEPT", -+#endif - NULL }, - *unset_cmds[] = { -+#ifndef NO_DEFAULT_FIREWALL - "iptables -t nat -D POSTROUTING -o $EXT_IF_NAME -s $REMOTE_TUN_IP -j MASQUERADE", - "iptables -t filter -D FORWARD -i $EXT_IF_NAME -o $IF_NAME -m state --state " - "RELATED,ESTABLISHED -j ACCEPT", - "iptables -t filter -D FORWARD -i $IF_NAME -o $EXT_IF_NAME -j ACCEPT", - "iptables -t raw -D PREROUTING ! -i $IF_NAME -d $LOCAL_TUN_IP -m addrtype ! " - "--src-type LOCAL -j DROP", -+#endif - NULL - }; - #elif defined(__APPLE__) || defined(__OpenBSD__) || defined(__FreeBSD__) || \ -@@ -503,12 +507,17 @@ - #elif defined(__linux__) - static const char - *set_cmds[] = -- { "sysctl net.ipv4.tcp_congestion_control=bbr", -+ { -+#ifndef NO_DEFAULT_CONGESTION -+ "sysctl net.ipv4.tcp_congestion_control=bbr", -+#endif - "ip link set dev $IF_NAME up", -- "iptables -t raw -I PREROUTING ! -i $IF_NAME -d $LOCAL_TUN_IP -m addrtype ! " -- "--src-type LOCAL -j DROP", - "ip addr add $LOCAL_TUN_IP peer $REMOTE_TUN_IP dev $IF_NAME", - "ip -6 addr add $LOCAL_TUN_IP6 peer $REMOTE_TUN_IP6/96 dev $IF_NAME", -+#ifndef NO_DEFAULT_FIREWALL -+ "iptables -t raw -I PREROUTING ! -i $IF_NAME -d $LOCAL_TUN_IP -m addrtype ! " -+ "--src-type LOCAL -j DROP", -+#endif - #ifndef NO_DEFAULT_ROUTES - "ip route add default dev $IF_NAME table 42069", - "ip -6 route add default dev $IF_NAME table 42069", -@@ -525,8 +534,10 @@ - "ip rule delete table main suppress_prefixlength 0", - "ip -6 rule delete table main suppress_prefixlength 0", - #endif -+#ifndef NO_DEFAULT_FIREWALL - "iptables -t raw -D PREROUTING ! -i $IF_NAME -d $LOCAL_TUN_IP -m addrtype ! " - "--src-type LOCAL -j DROP", -+#endif - NULL - }; - #else diff --git a/fast-classifier/Makefile b/fast-classifier/Makefile new file mode 100644 index 000000000..410a0df28 --- /dev/null +++ b/fast-classifier/Makefile @@ -0,0 +1,109 @@ +# +# Copyright (c) 2013-2018 The Linux Foundation. All rights reserved. +# Permission to use, copy, modify, and/or distribute this software for +# any purpose with or without fee is hereby granted, provided that the +# above copyright notice and this permission notice appear in all copies. +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=fast-classifier +PKG_RELEASE:=6 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/fast-classifier/Default + SECTION:=kernel + CATEGORY:=Kernel modules + SUBMENU:=Network Support + DEPENDS:=@KERNEL_5_4 +kmod-ipt-conntrack +kmod-shortcut-fe + TITLE:=Kernel driver for FAST Classifier + FILES:=$(PKG_BUILD_DIR)/fast-classifier.ko + KCONFIG:= \ + CONFIG_NF_CONNTRACK_EVENTS=y \ + CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y \ + CONFIG_NF_CONNTRACK_MARK=y \ + CONFIG_XFRM=y + CONFLICTS:=kmod-shortcut-fe-drv kmod-shortcut-fe-cm +endef + +define KernelPackage/fast-classifier + $(call KernelPackage/fast-classifier/Default) +endef + +define KernelPackage/fast-classifier-noload + $(call KernelPackage/fast-classifier/Default) +endef + +define KernelPackage/fast-classifier/Default/description +FAST Classifier talks to SFE to make decisions about offloading connections +endef + +define KernelPackage/fast-classifier/description +$(call KernelPackage/fast-classifier/Default/description) +endef + +define KernelPackage/fast-classifier-noload/description +$(call KernelPackage/fast-classifier/Default/description) + +This package does not load fast-classifier at boot by default +endef + +define Package/fast-classifier-example + TITLE:=Example user space program for fast-classifier + DEPENDS:=@KERNEL_5_4 +libnl +kmod-fast-classifier +endef + +define Package/fast-classifier-example/description +Example user space program that communicates with fast +classifier kernel module +endef + +HAVE_ECM:=$(CONFIG_PACKAGE_kmod-qca-nss-ecm-premium)$(CONFIG_PACKAGE_kmod-qca-nss-ecm-noload)$(CONFIG_PACKAGE_kmod-qca-nss-ecm-premium-noload)$(CONFIG_PACKAGE_kmod-qca-nss-ecm-standard) + +define Build/Compile/kmod + +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ + $(KERNEL_MAKE_FLAGS) \ + $(PKG_MAKE_FLAGS) \ + M="$(PKG_BUILD_DIR)" \ + CONFIG_FAST_CLASSIFIER=m \ + EXTRA_CFLAGS+="-DSFE_SUPPORT_IPV6" \ + $(if $(HAVE_ECM),EXTRA_CFLAGS+="-DCONFIG_SFE_ECM" CONFIG_SFE_ECM=y,) \ + modules +endef + +define Build/Compile/example + $(TARGET_CC) -o $(PKG_BUILD_DIR)/userspace_fast_classifier \ + -I $(PKG_BUILD_DIR) \ + -I$(STAGING_DIR)/usr/include/libnl \ + -I$(STAGING_DIR)/usr/include/libnl3 \ + -lnl-genl-3 -lnl-3 \ + $(PKG_BUILD_DIR)/nl_classifier_test.c +endef + +define Build/Compile + $(Build/Compile/kmod) + $(if $(CONFIG_PACKAGE_fast-classifier-example),$(Build/Compile/example)) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_BUILD_DIR)/fast-classifier.h $(1)/usr/include/ +endef + +define Package/fast-classifier-example/install + $(INSTALL_DIR) $(1)/sbin + $(CP) $(PKG_BUILD_DIR)/userspace_fast_classifier $(1)/sbin/ +endef + +$(eval $(call KernelPackage,fast-classifier)) +#$(eval $(call KernelPackage,fast-classifier-noload)) +#$(eval $(call BuildPackage,fast-classifier-example)) diff --git a/fast-classifier/src/Makefile b/fast-classifier/src/Makefile new file mode 100644 index 000000000..58dd06e01 --- /dev/null +++ b/fast-classifier/src/Makefile @@ -0,0 +1,10 @@ +obj-$(CONFIG_FAST_CLASSIFIER) += fast-classifier.o + +ifeq ($(SFE_SUPPORT_IPV6),) +SFE_SUPPORT_IPV6=y +endif +ccflags-$(SFE_SUPPORT_IPV6) += -DSFE_SUPPORT_IPV6 + +ccflags-y += -I$(obj)/../shortcut-fe + +obj ?= . diff --git a/fast-classifier/src/fast-classifier.c b/fast-classifier/src/fast-classifier.c new file mode 100644 index 000000000..944dfae38 --- /dev/null +++ b/fast-classifier/src/fast-classifier.c @@ -0,0 +1,2002 @@ +/* + * fast-classifier.c + * Shortcut forwarding engine connection manager. + * fast-classifier + * + * Copyright (c) 2013-2018 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "fast-classifier.h" + +typedef enum fast_classifier_exception { + FAST_CL_EXCEPTION_PACKET_BROADCAST, + FAST_CL_EXCEPTION_PACKET_MULTICAST, + FAST_CL_EXCEPTION_NO_IIF, + FAST_CL_EXCEPTION_NO_CT, + FAST_CL_EXCEPTION_CT_NO_TRACK, + FAST_CL_EXCEPTION_CT_NO_CONFIRM, + FAST_CL_EXCEPTION_CT_IS_ALG, + FAST_CL_EXCEPTION_IS_IPV4_MCAST, + FAST_CL_EXCEPTION_IS_IPV6_MCAST, + FAST_CL_EXCEPTION_TCP_NOT_ASSURED, + FAST_CL_EXCEPTION_TCP_NOT_ESTABLISHED, + FAST_CL_EXCEPTION_UNKNOW_PROTOCOL, + FAST_CL_EXCEPTION_NO_SRC_DEV, + FAST_CL_EXCEPTION_NO_SRC_XLATE_DEV, + FAST_CL_EXCEPTION_NO_DEST_DEV, + FAST_CL_EXCEPTION_NO_DEST_XLATE_DEV, + FAST_CL_EXCEPTION_NO_BRIDGE, + FAST_CL_EXCEPTION_LOCAL_OUT, + FAST_CL_EXCEPTION_WAIT_FOR_ACCELERATION, + FAST_CL_EXCEPTION_UPDATE_PROTOCOL_FAIL, + FAST_CL_EXCEPTION_CT_DESTROY_MISS, + FAST_CL_EXCEPTION_MAX +} fast_classifier_exception_t; + +static char *fast_classifier_exception_events_string[FAST_CL_EXCEPTION_MAX] = { + "PACKET_BROADCAST", + "PACKET_MULTICAST", + "NO_IIF", + "NO_CT", + "CT_NO_TRACK", + "CT_NO_CONFIRM", + "CT_IS_ALG", + "IS_IPV4_MCAST", + "IS_IPV6_MCAST", + "TCP_NOT_ASSURED", + "TCP_NOT_ESTABLISHED", + "UNKNOW_PROTOCOL", + "NO_SRC_DEV", + "NO_SRC_XLATE_DEV", + "NO_DEST_DEV", + "NO_DEST_XLATE_DEV", + "NO_BRIDGE", + "LOCAL_OUT", + "WAIT_FOR_ACCELERATION", + "UPDATE_PROTOCOL_FAIL", + "CT_DESTROY_MISS", +}; + +/* + * Per-module structure. + */ +struct fast_classifier { + spinlock_t lock; /* Lock for SMP correctness */ + + /* + * Control state. + */ + struct kobject *sys_fast_classifier; /* sysfs linkage */ + + /* + * Callback notifiers. + */ + struct notifier_block dev_notifier; /* Device notifier */ + struct notifier_block inet_notifier; /* IPv4 notifier */ + struct notifier_block inet6_notifier; /* IPv6 notifier */ + u32 exceptions[FAST_CL_EXCEPTION_MAX]; +}; + +static struct fast_classifier __sc; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) +static struct nla_policy fast_classifier_genl_policy[FAST_CLASSIFIER_A_MAX + 1] = { + [FAST_CLASSIFIER_A_TUPLE] = { + .type = NLA_UNSPEC, + .len = sizeof(struct fast_classifier_tuple) + }, +}; +#endif /*KERNEL_VERSION(5, 2, 0)*/ + +static struct genl_multicast_group fast_classifier_genl_mcgrp[] = { + { + .name = FAST_CLASSIFIER_GENL_MCGRP, + }, +}; + +static int fast_classifier_offload_genl_msg(struct sk_buff *skb, struct genl_info *info); +static int fast_classifier_nl_genl_msg_DUMP(struct sk_buff *skb, struct netlink_callback *cb); + +static struct genl_ops fast_classifier_gnl_ops[] = { + { + .cmd = FAST_CLASSIFIER_C_OFFLOAD, + .flags = 0, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) + .policy = fast_classifier_genl_policy, +#endif /*KERNEL_VERSION(5, 2, 0)*/ + .doit = fast_classifier_offload_genl_msg, + .dumpit = NULL, + }, + { + .cmd = FAST_CLASSIFIER_C_OFFLOADED, + .flags = 0, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) + .policy = fast_classifier_genl_policy, +#endif /*KERNEL_VERSION(5, 2, 0)*/ + .doit = NULL, + .dumpit = fast_classifier_nl_genl_msg_DUMP, + }, + { + .cmd = FAST_CLASSIFIER_C_DONE, + .flags = 0, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) + .policy = fast_classifier_genl_policy, +#endif /*KERNEL_VERSION(5, 2, 0)*/ + .doit = NULL, + .dumpit = fast_classifier_nl_genl_msg_DUMP, + }, +}; + +static struct genl_family fast_classifier_gnl_family = { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)) + .id = GENL_ID_GENERATE, +#endif /*KERNEL_VERSION(4, 10, 0)*/ + .hdrsize = FAST_CLASSIFIER_GENL_HDRSIZE, + .name = FAST_CLASSIFIER_GENL_NAME, + .version = FAST_CLASSIFIER_GENL_VERSION, + .maxattr = FAST_CLASSIFIER_A_MAX, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) + .ops = fast_classifier_gnl_ops, + .n_ops = ARRAY_SIZE(fast_classifier_gnl_ops), + .mcgrps = fast_classifier_genl_mcgrp, + .n_mcgrps = ARRAY_SIZE(fast_classifier_genl_mcgrp), +#endif /*KERNEL_VERSION(4, 10, 0)*/ +}; + +static atomic_t offload_msgs = ATOMIC_INIT(0); +static atomic_t offload_no_match_msgs = ATOMIC_INIT(0); +static atomic_t offloaded_msgs = ATOMIC_INIT(0); +static atomic_t done_msgs = ATOMIC_INIT(0); + +static atomic_t offloaded_fail_msgs = ATOMIC_INIT(0); +static atomic_t done_fail_msgs = ATOMIC_INIT(0); + +/* + * Accelerate incoming packets destined for bridge device + * If a incoming packet is ultimatly destined for + * a bridge device we will first see the packet coming + * from the phyiscal device, we can skip straight to + * processing the packet like it came from the bridge + * for some more performance gains + * + * This only works when the hook is above the bridge. We + * only implement ingress for now, because for egress we + * want to have the bridge devices qdiscs be used. + */ +static bool skip_to_bridge_ingress; + +/* + * fast_classifier_incr_exceptions() + * increase an exception counter. + */ +static inline void fast_classifier_incr_exceptions(fast_classifier_exception_t except) +{ + struct fast_classifier *sc = &__sc; + + spin_lock_bh(&sc->lock); + sc->exceptions[except]++; + spin_unlock_bh(&sc->lock); +} + +/* + * fast_classifier_recv() + * Handle packet receives. + * + * Returns 1 if the packet is forwarded or 0 if it isn't. + */ +int fast_classifier_recv(struct sk_buff *skb) +{ + struct net_device *dev; + struct net_device *master_dev = NULL; + int ret = 0; + + /* + * We know that for the vast majority of packets we need the transport + * layer header so we may as well start to fetch it now! + */ + prefetch(skb->data + 32); + barrier(); + + dev = skb->dev; + + /* + * Process packet like it arrived on the bridge device + */ + if (skip_to_bridge_ingress && + (dev->priv_flags & IFF_BRIDGE_PORT)) { + master_dev = sfe_dev_get_master(dev); + if (!master_dev) { + DEBUG_WARN("master dev is NULL %s\n", dev->name); + goto rx_exit; + } + dev = master_dev; + } + + /* + * We're only interested in IPv4 and IPv6 packets. + */ + if (likely(htons(ETH_P_IP) == skb->protocol)) { + struct in_device *in_dev; + + /* + * Does our input device support IP processing? + */ + in_dev = (struct in_device *)dev->ip_ptr; + if (unlikely(!in_dev)) { + DEBUG_TRACE("no IP processing for device: %s\n", dev->name); + goto rx_exit; + } + + /* + * Does it have an IP address? If it doesn't then we can't do anything + * interesting here! + */ + if (unlikely(!in_dev->ifa_list)) { + DEBUG_TRACE("no IP address for device: %s\n", dev->name); + goto rx_exit; + } + + ret = sfe_ipv4_recv(dev, skb); + + } else if (likely(htons(ETH_P_IPV6) == skb->protocol)) { + struct inet6_dev *in_dev; + + /* + * Does our input device support IPv6 processing? + */ + in_dev = (struct inet6_dev *)dev->ip6_ptr; + if (unlikely(!in_dev)) { + DEBUG_TRACE("no IPv6 processing for device: %s\n", dev->name); + goto rx_exit; + } + + /* + * Does it have an IPv6 address? If it doesn't then we can't do anything + * interesting here! + */ + if (unlikely(list_empty(&in_dev->addr_list))) { + DEBUG_TRACE("no IPv6 address for device: %s\n", dev->name); + goto rx_exit; + } + + ret = sfe_ipv6_recv(dev, skb); + + } else { + DEBUG_TRACE("not IP packet\n"); + } + +rx_exit: + if (master_dev) { + dev_put(master_dev); + } + + return ret; +} + +/* + * fast_classifier_find_dev_and_mac_addr() + * Find the device and MAC address for a given IPv4 address. + * + * Returns true if we find the device and MAC address, otherwise false. + * + * We look up the rtable entry for the address and, from its neighbour + * structure, obtain the hardware address. This means this function also + * works if the neighbours are routers too. + */ +static bool fast_classifier_find_dev_and_mac_addr(struct sk_buff *skb, sfe_ip_addr_t *addr, struct net_device **dev, u8 *mac_addr, bool is_v4) +{ + struct neighbour *neigh; + struct rtable *rt; + struct rt6_info *rt6; + struct dst_entry *dst; + struct net_device *mac_dev; + + /* + * If we have skb provided, use it as the original code is unable + * to lookup routes that are policy routed. + */ + if (unlikely(skb)) { + dst = skb_dst(skb); + goto skip_dst_lookup; + } + + /* + * Look up the rtable entry for the IP address then get the hardware + * address from its neighbour structure. This means this works when the + * neighbours are routers too. + */ + if (likely(is_v4)) { + rt = ip_route_output(&init_net, addr->ip, 0, 0, 0); + if (unlikely(IS_ERR(rt))) { + goto ret_fail; + } + + dst = (struct dst_entry *)rt; + } +#ifdef SFE_SUPPORT_IPV6 + else { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)) + rt6 = rt6_lookup(&init_net, (struct in6_addr *)addr->ip6, 0, 0, NULL, 0); +#else + rt6 = rt6_lookup(&init_net, (struct in6_addr *)addr->ip6, 0, 0, 0); +#endif /*KERNEL_VERSION(4, 17, 0)*/ + if (!rt6) { + goto ret_fail; + } + + dst = (struct dst_entry *)rt6; + } +#endif + +skip_dst_lookup: + rcu_read_lock(); + neigh = sfe_dst_get_neighbour(dst, addr); + if (unlikely(!neigh)) { + rcu_read_unlock(); + if (likely(!skb)) + dst_release(dst); + + goto ret_fail; + } + + if (unlikely(!(neigh->nud_state & NUD_VALID))) { + rcu_read_unlock(); + neigh_release(neigh); + if (likely(!skb)) + dst_release(dst); + + goto ret_fail; + } + + mac_dev = neigh->dev; + if (!mac_dev) { + rcu_read_unlock(); + neigh_release(neigh); + if (likely(!skb)) + dst_release(dst); + + goto ret_fail; + } + + memcpy(mac_addr, neigh->ha, (size_t)mac_dev->addr_len); + + dev_hold(mac_dev); + *dev = mac_dev; + rcu_read_unlock(); + neigh_release(neigh); + if (likely(!skb)) + dst_release(dst); + + return true; + +ret_fail: + if (is_v4) { + DEBUG_TRACE("failed to find MAC address for IP: %pI4\n", addr); + + } else { + DEBUG_TRACE("failed to find MAC address for IP: %pI6\n", addr); + } + + return false; +} + +static DEFINE_SPINLOCK(sfe_connections_lock); + +struct sfe_connection { + struct hlist_node hl; + struct sfe_connection_create *sic; + struct nf_conn *ct; + int hits; + int offload_permit; + int offloaded; + bool is_v4; + unsigned char smac[ETH_ALEN]; + unsigned char dmac[ETH_ALEN]; +}; + +static int sfe_connections_size; + +#define FC_CONN_HASH_ORDER 13 +static DEFINE_HASHTABLE(fc_conn_ht, FC_CONN_HASH_ORDER); + +static u32 fc_conn_hash(sfe_ip_addr_t *saddr, sfe_ip_addr_t *daddr, + unsigned short sport, unsigned short dport, bool is_v4) +{ + u32 idx, cnt = ((is_v4 ? sizeof(saddr->ip) : sizeof(saddr->ip6))/sizeof(u32)); + u32 hash = 0; + + for (idx = 0; idx < cnt; idx++) { + hash ^= ((u32 *)saddr)[idx] ^ ((u32 *)daddr)[idx]; + } + + return hash ^ (sport | (dport << 16)); +} + +/* + * fast_classifier_update_protocol() + * Update sfe_ipv4_create struct with new protocol information before we offload + */ +static int fast_classifier_update_protocol(struct sfe_connection_create *p_sic, struct nf_conn *ct) +{ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) + struct net *net=NULL ; + struct nf_tcp_net *tn=NULL; + #endif + switch (p_sic->protocol) { + case IPPROTO_TCP: + p_sic->src_td_window_scale = ct->proto.tcp.seen[0].td_scale; + p_sic->src_td_max_window = ct->proto.tcp.seen[0].td_maxwin; + p_sic->src_td_end = ct->proto.tcp.seen[0].td_end; + p_sic->src_td_max_end = ct->proto.tcp.seen[0].td_maxend; + p_sic->dest_td_window_scale = ct->proto.tcp.seen[1].td_scale; + p_sic->dest_td_max_window = ct->proto.tcp.seen[1].td_maxwin; + p_sic->dest_td_end = ct->proto.tcp.seen[1].td_end; + p_sic->dest_td_max_end = ct->proto.tcp.seen[1].td_maxend; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) + net = nf_ct_net(ct); + tn = nf_tcp_pernet(net); + if ((tn&&tn->tcp_no_window_check) +#else + if (nf_ct_tcp_no_window_check +#endif + + || (ct->proto.tcp.seen[0].flags & IP_CT_TCP_FLAG_BE_LIBERAL) + || (ct->proto.tcp.seen[1].flags & IP_CT_TCP_FLAG_BE_LIBERAL)) { + p_sic->flags |= SFE_CREATE_FLAG_NO_SEQ_CHECK; + } + + /* + * If the connection is shutting down do not manage it. + * state can not be SYN_SENT, SYN_RECV because connection is assured + * Not managed states: FIN_WAIT, CLOSE_WAIT, LAST_ACK, TIME_WAIT, CLOSE. + */ + spin_lock(&ct->lock); + if (ct->proto.tcp.state != TCP_CONNTRACK_ESTABLISHED) { + spin_unlock(&ct->lock); + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_TCP_NOT_ESTABLISHED); + DEBUG_TRACE("connection in termination state: %#x, s: %pI4:%u, d: %pI4:%u\n", + ct->proto.tcp.state, &p_sic->src_ip, ntohs(p_sic->src_port), + &p_sic->dest_ip, ntohs(p_sic->dest_port)); + return 0; + } + spin_unlock(&ct->lock); + break; + + case IPPROTO_UDP: + break; + + default: + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_UNKNOW_PROTOCOL); + DEBUG_TRACE("unhandled protocol %d\n", p_sic->protocol); + return 0; + } + + return 1; +} + +/* fast_classifier_send_genl_msg() + * Function to send a generic netlink message + */ +static void fast_classifier_send_genl_msg(int msg, struct fast_classifier_tuple *fc_msg) +{ + struct sk_buff *skb; + int rc; + int buf_len; + int total_len; + void *msg_head; + + /* + * Calculate our packet payload size. + * Start with our family header. + */ + buf_len = fast_classifier_gnl_family.hdrsize; + + /* + * Add the nla_total_size of each attribute we're going to nla_put(). + */ + buf_len += nla_total_size(sizeof(*fc_msg)); + + /* + * Lastly we need to add space for the NL message header since + * genlmsg_new only accounts for the GENL header and not the + * outer NL header. To do this, we use a NL helper function which + * calculates the total size of a netlink message given a payload size. + * Note this value does not include the GENL header, but that's + * added automatically by genlmsg_new. + */ + total_len = nlmsg_total_size(buf_len); + skb = genlmsg_new(total_len, GFP_ATOMIC); + if (!skb) + return; + + msg_head = genlmsg_put(skb, 0, 0, &fast_classifier_gnl_family, 0, msg); + if (!msg_head) { + nlmsg_free(skb); + return; + } + + rc = nla_put(skb, FAST_CLASSIFIER_A_TUPLE, sizeof(struct fast_classifier_tuple), fc_msg); + if (rc != 0) { + genlmsg_cancel(skb, msg_head); + nlmsg_free(skb); + return; + } + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19 , 0)) + rc = genlmsg_end(skb, msg_head); + if (rc < 0) { + genlmsg_cancel(skb, msg_head); + nlmsg_free(skb); + return; + } +#else + genlmsg_end(skb, msg_head); + +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)) + rc = genlmsg_multicast(&fast_classifier_gnl_family, skb, 0, 0, GFP_ATOMIC); +#else + rc = genlmsg_multicast(skb, 0, fast_classifier_genl_mcgrp[0].id, GFP_ATOMIC); +#endif + switch (msg) { + case FAST_CLASSIFIER_C_OFFLOADED: + if (rc == 0) { + atomic_inc(&offloaded_msgs); + } else { + atomic_inc(&offloaded_fail_msgs); + } + break; + case FAST_CLASSIFIER_C_DONE: + if (rc == 0) { + atomic_inc(&done_msgs); + } else { + atomic_inc(&done_fail_msgs); + } + break; + default: + DEBUG_ERROR("fast-classifer: Unknown message type sent!\n"); + break; + } + + DEBUG_TRACE("Notify NL message %d ", msg); + if (fc_msg->ethertype == AF_INET) { + DEBUG_TRACE("sip=%pI4 dip=%pI4 ", &fc_msg->src_saddr, &fc_msg->dst_saddr); + } else { + DEBUG_TRACE("sip=%pI6 dip=%pI6 ", &fc_msg->src_saddr, &fc_msg->dst_saddr); + } + DEBUG_TRACE("protocol=%d sport=%d dport=%d smac=%pM dmac=%pM\n", + fc_msg->proto, fc_msg->sport, fc_msg->dport, fc_msg->smac, fc_msg->dmac); +} + +/* + * fast_classifier_find_conn() + * find a connection object in the hash table + * @pre the sfe_connection_lock must be held before calling this function + */ +static struct sfe_connection * +fast_classifier_find_conn(sfe_ip_addr_t *saddr, sfe_ip_addr_t *daddr, + unsigned short sport, unsigned short dport, + unsigned char proto, bool is_v4) +{ + struct sfe_connection_create *p_sic; + struct sfe_connection *conn; + u32 key; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + struct hlist_node *node; +#endif + + key = fc_conn_hash(saddr, daddr, sport, dport, is_v4); + + sfe_hash_for_each_possible(fc_conn_ht, conn, node, hl, key) { + if (conn->is_v4 != is_v4) { + continue; + } + + p_sic = conn->sic; + + if (p_sic->protocol == proto && + p_sic->src_port == sport && + p_sic->dest_port == dport && + sfe_addr_equal(&p_sic->src_ip, saddr, is_v4) && + sfe_addr_equal(&p_sic->dest_ip, daddr, is_v4)) { + return conn; + } + } + + DEBUG_TRACE("connection not found\n"); + return NULL; +} + +/* + * fast_classifier_sb_find_conn() + * find a connection object in the hash table according to information of packet + * if not found, reverse the tuple and try again. + * @pre the sfe_connection_lock must be held before calling this function + */ +static struct sfe_connection * +fast_classifier_sb_find_conn(sfe_ip_addr_t *saddr, sfe_ip_addr_t *daddr, + unsigned short sport, unsigned short dport, + unsigned char proto, bool is_v4) +{ + struct sfe_connection_create *p_sic; + struct sfe_connection *conn; + u32 key; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + struct hlist_node *node; +#endif + + key = fc_conn_hash(saddr, daddr, sport, dport, is_v4); + + sfe_hash_for_each_possible(fc_conn_ht, conn, node, hl, key) { + if (conn->is_v4 != is_v4) { + continue; + } + + p_sic = conn->sic; + + if (p_sic->protocol == proto && + p_sic->src_port == sport && + p_sic->dest_port_xlate == dport && + sfe_addr_equal(&p_sic->src_ip, saddr, is_v4) && + sfe_addr_equal(&p_sic->dest_ip_xlate, daddr, is_v4)) { + return conn; + } + } + + /* + * Reverse the tuple and try again + */ + key = fc_conn_hash(daddr, saddr, dport, sport, is_v4); + + sfe_hash_for_each_possible(fc_conn_ht, conn, node, hl, key) { + if (conn->is_v4 != is_v4) { + continue; + } + + p_sic = conn->sic; + + if (p_sic->protocol == proto && + p_sic->src_port == dport && + p_sic->dest_port_xlate == sport && + sfe_addr_equal(&p_sic->src_ip, daddr, is_v4) && + sfe_addr_equal(&p_sic->dest_ip_xlate, saddr, is_v4)) { + return conn; + } + } + + DEBUG_TRACE("connection not found\n"); + return NULL; +} + +/* + * fast_classifier_add_conn() + * add a connection object in the hash table if no duplicate + * @conn connection to add + * @return conn if successful, NULL if duplicate + */ +static struct sfe_connection * +fast_classifier_add_conn(struct sfe_connection *conn) +{ + struct sfe_connection_create *sic = conn->sic; + u32 key; + + spin_lock_bh(&sfe_connections_lock); + if (fast_classifier_find_conn(&sic->src_ip, &sic->dest_ip, sic->src_port, + sic->dest_port, sic->protocol, conn->is_v4)) { + spin_unlock_bh(&sfe_connections_lock); + return NULL; + } + + key = fc_conn_hash(&sic->src_ip, &sic->dest_ip, + sic->src_port, sic->dest_port, conn->is_v4); + + hash_add(fc_conn_ht, &conn->hl, key); + sfe_connections_size++; + spin_unlock_bh(&sfe_connections_lock); + + DEBUG_TRACE(" -> adding item to sfe_connections, new size: %d\n", sfe_connections_size); + + if (conn->is_v4) { + DEBUG_TRACE("new offloadable: key: %u proto: %d src_ip: %pI4 dst_ip: %pI4, src_port: %d, dst_port: %d\n", + key, sic->protocol, &(sic->src_ip), &(sic->dest_ip), sic->src_port, sic->dest_port); + } else { + DEBUG_TRACE("new offloadable: key: %u proto: %d src_ip: %pI6 dst_ip: %pI6, src_port: %d, dst_port: %d\n", + key, sic->protocol, &(sic->src_ip), &(sic->dest_ip), sic->src_port, sic->dest_port); + } + + return conn; +} + +/* + * fast_classifier_offload_genl_msg() + * Called from user space to offload a connection + */ +static int +fast_classifier_offload_genl_msg(struct sk_buff *skb, struct genl_info *info) +{ + struct nlattr *na; + struct fast_classifier_tuple *fc_msg; + struct sfe_connection *conn; + + na = info->attrs[FAST_CLASSIFIER_A_TUPLE]; + fc_msg = nla_data(na); + + if (fc_msg->ethertype == AF_INET) { + DEBUG_TRACE("want to offload: %d-%d, %pI4, %pI4, %d, %d SMAC=%pM DMAC=%pM\n", + fc_msg->ethertype, + fc_msg->proto, + &fc_msg->src_saddr, + &fc_msg->dst_saddr, + fc_msg->sport, + fc_msg->dport, + fc_msg->smac, + fc_msg->dmac); + } else { + DEBUG_TRACE("want to offload: %d-%d, %pI6, %pI6, %d, %d SMAC=%pM DMAC=%pM\n", + fc_msg->ethertype, + fc_msg->proto, + &fc_msg->src_saddr, + &fc_msg->dst_saddr, + fc_msg->sport, + fc_msg->dport, + fc_msg->smac, + fc_msg->dmac); + } + + spin_lock_bh(&sfe_connections_lock); + conn = fast_classifier_sb_find_conn((sfe_ip_addr_t *)&fc_msg->src_saddr, + (sfe_ip_addr_t *)&fc_msg->dst_saddr, + fc_msg->sport, + fc_msg->dport, + fc_msg->proto, + (fc_msg->ethertype == AF_INET)); + if (!conn) { + spin_unlock_bh(&sfe_connections_lock); + DEBUG_TRACE("REQUEST OFFLOAD NO MATCH\n"); + atomic_inc(&offload_no_match_msgs); + return 0; + } + + conn->offload_permit = 1; + spin_unlock_bh(&sfe_connections_lock); + atomic_inc(&offload_msgs); + + DEBUG_TRACE("INFO: calling sfe rule creation!\n"); + return 0; +} + +/* + * fast_classifier_nl_genl_msg_DUMP() + * ignore fast_classifier_messages OFFLOADED and DONE + */ +static int fast_classifier_nl_genl_msg_DUMP(struct sk_buff *skb, + struct netlink_callback *cb) +{ + return 0; +} + +/* auto offload connection once we have this many packets*/ +static int offload_at_pkts = 128; + +/* + * fast_classifier_post_routing() + * Called for packets about to leave the box - either locally generated or forwarded from another interface + */ +static unsigned int fast_classifier_post_routing(struct sk_buff *skb, bool is_v4) +{ + int ret; + struct sfe_connection_create sic; + struct sfe_connection_create *p_sic; + struct net_device *in; + struct nf_conn *ct; + enum ip_conntrack_info ctinfo; + struct net_device *dev; + struct net_device *src_dev; + struct net_device *dest_dev; + struct net_device *src_dev_tmp; + struct net_device *dest_dev_tmp; + struct net_device *src_br_dev = NULL; + struct net_device *dest_br_dev = NULL; + struct nf_conntrack_tuple orig_tuple; + struct nf_conntrack_tuple reply_tuple; + struct sfe_connection *conn; + struct sk_buff *tmp_skb = NULL; + + /* + * Don't process broadcast or multicast packets. + */ + if (unlikely(skb->pkt_type == PACKET_BROADCAST)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_PACKET_BROADCAST); + DEBUG_TRACE("broadcast, ignoring\n"); + return NF_ACCEPT; + } + if (unlikely(skb->pkt_type == PACKET_MULTICAST)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_PACKET_MULTICAST); + DEBUG_TRACE("multicast, ignoring\n"); + return NF_ACCEPT; + } + + /* + * Don't process packets that are not being forwarded. + */ + in = dev_get_by_index(&init_net, skb->skb_iif); + if (!in) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_IIF); + DEBUG_TRACE("packet not forwarding\n"); + return NF_ACCEPT; + } + + dev_put(in); + + /* + * Don't process packets that aren't being tracked by conntrack. + */ + ct = nf_ct_get(skb, &ctinfo); + if (unlikely(!ct)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_CT); + DEBUG_TRACE("no conntrack connection, ignoring\n"); + return NF_ACCEPT; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) + /* + * Don't process untracked connections. + */ + if (unlikely(nf_ct_is_untracked(ct))) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_NO_TRACK); + DEBUG_TRACE("untracked connection\n"); + return NF_ACCEPT; + } +#endif /*KERNEL_VERSION(4, 12, 0)*/ + + /* + * Unconfirmed connection may be dropped by Linux at the final step, + * So we don't process unconfirmed connections. + */ + if (!nf_ct_is_confirmed(ct)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_NO_CONFIRM); + DEBUG_TRACE("unconfirmed connection\n"); + return NF_ACCEPT; + } + + /* + * Don't process connections that require support from a 'helper' (typically a NAT ALG). + */ + if (unlikely(nfct_help(ct))) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_IS_ALG); + DEBUG_TRACE("connection has helper\n"); + return NF_ACCEPT; + } + + memset(&sic, 0, sizeof(sic)); + + /* + * Look up the details of our connection in conntrack. + * + * Note that the data we get from conntrack is for the "ORIGINAL" direction + * but our packet may actually be in the "REPLY" direction. + */ + orig_tuple = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple; + reply_tuple = ct->tuplehash[IP_CT_DIR_REPLY].tuple; + sic.protocol = (s32)orig_tuple.dst.protonum; + + sic.flags = 0; + + /* + * Get addressing information, non-NAT first + */ + if (likely(is_v4)) { + u32 dscp; + + sic.src_ip.ip = (__be32)orig_tuple.src.u3.ip; + sic.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip; + + if (ipv4_is_multicast(sic.src_ip.ip) || ipv4_is_multicast(sic.dest_ip.ip)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_IS_IPV4_MCAST); + DEBUG_TRACE("multicast address\n"); + return NF_ACCEPT; + } + + /* + * NAT'ed addresses - note these are as seen from the 'reply' direction + * When NAT does not apply to this connection these will be identical to the above. + */ + sic.src_ip_xlate.ip = (__be32)reply_tuple.dst.u3.ip; + sic.dest_ip_xlate.ip = (__be32)reply_tuple.src.u3.ip; + + dscp = ipv4_get_dsfield(ip_hdr(skb)) >> XT_DSCP_SHIFT; + if (dscp) { + sic.dest_dscp = dscp; + sic.src_dscp = sic.dest_dscp; + sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP; + } + } else { + u32 dscp; + + sic.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6); + sic.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6); + + if (ipv6_addr_is_multicast((struct in6_addr *)sic.src_ip.ip6) || + ipv6_addr_is_multicast((struct in6_addr *)sic.dest_ip.ip6)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_IS_IPV6_MCAST); + DEBUG_TRACE("multicast address\n"); + return NF_ACCEPT; + } + + /* + * NAT'ed addresses - note these are as seen from the 'reply' direction + * When NAT does not apply to this connection these will be identical to the above. + */ + sic.src_ip_xlate.ip6[0] = *((struct sfe_ipv6_addr *)&reply_tuple.dst.u3.in6); + sic.dest_ip_xlate.ip6[0] = *((struct sfe_ipv6_addr *)&reply_tuple.src.u3.in6); + + dscp = ipv6_get_dsfield(ipv6_hdr(skb)) >> XT_DSCP_SHIFT; + if (dscp) { + sic.dest_dscp = dscp; + sic.src_dscp = sic.dest_dscp; + sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP; + } + } + + switch (sic.protocol) { + case IPPROTO_TCP: + sic.src_port = orig_tuple.src.u.tcp.port; + sic.dest_port = orig_tuple.dst.u.tcp.port; + sic.src_port_xlate = reply_tuple.dst.u.tcp.port; + sic.dest_port_xlate = reply_tuple.src.u.tcp.port; + + /* + * Don't try to manage a non-established connection. + */ + if (!test_bit(IPS_ASSURED_BIT, &ct->status)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_TCP_NOT_ASSURED); + DEBUG_TRACE("non-established connection\n"); + return NF_ACCEPT; + } + + break; + + case IPPROTO_UDP: + sic.src_port = orig_tuple.src.u.udp.port; + sic.dest_port = orig_tuple.dst.u.udp.port; + sic.src_port_xlate = reply_tuple.dst.u.udp.port; + sic.dest_port_xlate = reply_tuple.src.u.udp.port; + + /* + * Somehow, SFE is not playing nice with IPSec traffic. + * Do not accelerate for now. + */ + if (ntohs(sic.dest_port) == 4500 || ntohs(sic.dest_port) == 500) { + if (likely(is_v4)) + DEBUG_TRACE("quarkysg:: IPsec bypass: %pI4:%d(%pI4:%d) to %pI4:%d(%pI4:%d)\n", + &sic.src_ip.ip, ntohs(sic.src_port), &sic.src_ip_xlate.ip, ntohs(sic.src_port_xlate), + &sic.dest_ip.ip, ntohs(sic.dest_port), &sic.dest_ip_xlate.ip, ntohs(sic.dest_port_xlate)); + else + DEBUG_TRACE("quarkysg:: IPsec bypass: %pI6:%d to %pI6:%d\n", + &sic.src_ip.ip6, ntohs(sic.src_port), &sic.dest_ip.ip6, ntohs(sic.dest_port)); + return NF_ACCEPT; + } + break; + + default: + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_UNKNOW_PROTOCOL); + DEBUG_TRACE("unhandled protocol %d\n", sic.protocol); + return NF_ACCEPT; + } + +#ifdef CONFIG_XFRM + sic.original_accel = 1; + sic.reply_accel = 1; +#endif + + /* + * Get QoS information + */ + if (skb->priority) { + sic.dest_priority = skb->priority; + sic.src_priority = sic.dest_priority; + sic.flags |= SFE_CREATE_FLAG_REMARK_PRIORITY; + } + + if (is_v4) { + DEBUG_TRACE("POST_ROUTE: checking new connection: %d src_ip: %pI4 dst_ip: %pI4, src_port: %d, dst_port: %d\n", + sic.protocol, &sic.src_ip, &sic.dest_ip, sic.src_port, sic.dest_port); + } else { + DEBUG_TRACE("POST_ROUTE: checking new connection: %d src_ip: %pI6 dst_ip: %pI6, src_port: %d, dst_port: %d\n", + sic.protocol, &sic.src_ip, &sic.dest_ip, sic.src_port, sic.dest_port); + } + + /* + * If we already have this connection in our list, skip it + * XXX: this may need to be optimized + */ + spin_lock_bh(&sfe_connections_lock); + + conn = fast_classifier_find_conn(&sic.src_ip, &sic.dest_ip, sic.src_port, sic.dest_port, sic.protocol, is_v4); + if (conn) { + conn->hits++; + + if (!conn->offloaded) { + if (conn->offload_permit || conn->hits >= offload_at_pkts) { + DEBUG_TRACE("OFFLOADING CONNECTION, TOO MANY HITS\n"); + + if (fast_classifier_update_protocol(conn->sic, conn->ct) == 0) { + spin_unlock_bh(&sfe_connections_lock); + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_UPDATE_PROTOCOL_FAIL); + DEBUG_TRACE("UNKNOWN PROTOCOL OR CONNECTION CLOSING, SKIPPING\n"); + return NF_ACCEPT; + } + + DEBUG_TRACE("INFO: calling sfe rule creation!\n"); + spin_unlock_bh(&sfe_connections_lock); + + ret = is_v4 ? sfe_ipv4_create_rule(conn->sic) : sfe_ipv6_create_rule(conn->sic); + if ((ret == 0) || (ret == -EADDRINUSE)) { + struct fast_classifier_tuple fc_msg; + + if (is_v4) { + fc_msg.ethertype = AF_INET; + fc_msg.src_saddr.in = *((struct in_addr *)&sic.src_ip); + fc_msg.dst_saddr.in = *((struct in_addr *)&sic.dest_ip_xlate); + } else { + fc_msg.ethertype = AF_INET6; + fc_msg.src_saddr.in6 = *((struct in6_addr *)&sic.src_ip); + fc_msg.dst_saddr.in6 = *((struct in6_addr *)&sic.dest_ip_xlate); + } + + fc_msg.proto = sic.protocol; + fc_msg.sport = sic.src_port; + fc_msg.dport = sic.dest_port_xlate; + memcpy(fc_msg.smac, conn->smac, ETH_ALEN); + memcpy(fc_msg.dmac, conn->dmac, ETH_ALEN); + fast_classifier_send_genl_msg(FAST_CLASSIFIER_C_OFFLOADED, &fc_msg); + conn->offloaded = 1; + } + + return NF_ACCEPT; + } + } + + spin_unlock_bh(&sfe_connections_lock); + if (conn->offloaded) { + is_v4 ? sfe_ipv4_update_rule(conn->sic) : sfe_ipv6_update_rule(conn->sic); + } + + DEBUG_TRACE("FOUND, SKIPPING\n"); + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_WAIT_FOR_ACCELERATION); + return NF_ACCEPT; + } + + spin_unlock_bh(&sfe_connections_lock); + + /* + * Get the net device and MAC addresses that correspond to the various source and + * destination host addresses. + */ + if (!fast_classifier_find_dev_and_mac_addr(NULL, &sic.src_ip, &src_dev_tmp, sic.src_mac, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_SRC_DEV); + return NF_ACCEPT; + } + src_dev = src_dev_tmp; + + if (!fast_classifier_find_dev_and_mac_addr(NULL, &sic.src_ip_xlate, &dev, sic.src_mac_xlate, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_SRC_XLATE_DEV); + goto done1; + } + dev_put(dev); + + if (unlikely(!is_v4)) + tmp_skb = skb; + + if (!fast_classifier_find_dev_and_mac_addr(tmp_skb, &sic.dest_ip, &dev, sic.dest_mac, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_DEST_DEV); + goto done1; + } + dev_put(dev); + + if (!fast_classifier_find_dev_and_mac_addr(skb, &sic.dest_ip_xlate, &dest_dev_tmp, sic.dest_mac_xlate, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_DEST_XLATE_DEV); + goto done1; + } + dest_dev = dest_dev_tmp; + + /* + * Our devices may actually be part of a bridge interface. If that's + * the case then find the bridge interface instead. + */ + if (src_dev->priv_flags & IFF_BRIDGE_PORT) { + src_br_dev = sfe_dev_get_master(src_dev); + if (!src_br_dev) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_BRIDGE); + DEBUG_TRACE("no bridge found for: %s\n", src_dev->name); + goto done2; + } + src_dev = src_br_dev; + } + + if (dest_dev->priv_flags & IFF_BRIDGE_PORT) { + dest_br_dev = sfe_dev_get_master(dest_dev); + if (!dest_br_dev) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_BRIDGE); + DEBUG_TRACE("no bridge found for: %s\n", dest_dev->name); + goto done3; + } + dest_dev = dest_br_dev; + } + + sic.src_dev = src_dev; + sic.dest_dev = dest_dev; + + sic.src_mtu = src_dev->mtu; + sic.dest_mtu = dest_dev->mtu; + + if (skb->mark) { + DEBUG_TRACE("SKB MARK NON ZERO %x\n", skb->mark); + } + sic.mark = skb->mark; + + conn = kmalloc(sizeof(*conn), GFP_ATOMIC); + if (!conn) { + printk(KERN_CRIT "ERROR: no memory for sfe\n"); + goto done4; + } + conn->hits = 0; + conn->offload_permit = 0; + conn->offloaded = 0; + conn->is_v4 = is_v4; + DEBUG_TRACE("Source MAC=%pM\n", sic.src_mac); + memcpy(conn->smac, sic.src_mac, ETH_ALEN); + memcpy(conn->dmac, sic.dest_mac_xlate, ETH_ALEN); + + p_sic = kmalloc(sizeof(*p_sic), GFP_ATOMIC); + if (!p_sic) { + printk(KERN_CRIT "ERROR: no memory for sfe\n"); + kfree(conn); + goto done4; + } + + memcpy(p_sic, &sic, sizeof(sic)); + conn->sic = p_sic; + conn->ct = ct; + + if (!fast_classifier_add_conn(conn)) { + kfree(conn->sic); + kfree(conn); + } + + /* + * If we had bridge ports then release them too. + */ +done4: + if (dest_br_dev) { + dev_put(dest_br_dev); + } +done3: + if (src_br_dev) { + dev_put(src_br_dev); + } +done2: + dev_put(dest_dev_tmp); +done1: + dev_put(src_dev_tmp); + + return NF_ACCEPT; +} + +/* + * fast_classifier_ipv4_post_routing_hook() + * Called for packets about to leave the box - either locally generated or forwarded from another interface + */ +fast_classifier_ipv4_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn) +{ + return fast_classifier_post_routing(skb, true); +} + +/* + * fast_classifier_ipv6_post_routing_hook() + * Called for packets about to leave the box - either locally generated or forwarded from another interface + */ +fast_classifier_ipv6_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn) +{ + return fast_classifier_post_routing(skb, false); +} + +/* + * fast_classifier_update_mark() + * updates the mark for a fast-classifier connection + */ +static void fast_classifier_update_mark(struct sfe_connection_mark *mark, bool is_v4) +{ + struct sfe_connection *conn; + + spin_lock_bh(&sfe_connections_lock); + + conn = fast_classifier_find_conn(&mark->src_ip, &mark->dest_ip, + mark->src_port, mark->dest_port, + mark->protocol, is_v4); + if (conn) { + conn->sic->mark = mark->mark; + } + + spin_unlock_bh(&sfe_connections_lock); +} + +#ifdef CONFIG_NF_CONNTRACK_EVENTS +/* + * fast_classifier_conntrack_event() + * Callback event invoked when a conntrack connection's state changes. + */ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS +static int fast_classifier_conntrack_event(struct notifier_block *this, + unsigned long events, void *ptr) +#else +static int fast_classifier_conntrack_event(unsigned int events, struct nf_ct_event *item) +#endif +{ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + struct nf_ct_event *item = ptr; +#endif + struct sfe_connection_destroy sid; + struct nf_conn *ct = item->ct; + struct nf_conntrack_tuple orig_tuple; + struct sfe_connection *conn; + struct fast_classifier_tuple fc_msg; + int offloaded = 0; + bool is_v4; + + /* + * If we don't have a conntrack entry then we're done. + */ + if (unlikely(!ct)) { + DEBUG_WARN("no ct in conntrack event callback\n"); + return NOTIFY_DONE; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) + /* + * If this is an untracked connection then we can't have any state either. + */ + if (unlikely(nf_ct_is_untracked(ct))) { + DEBUG_TRACE("ignoring untracked conn\n"); + return NOTIFY_DONE; + } +#endif /*KERNEL_VERSION(4, 12, 0)*/ + + orig_tuple = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple; + sid.protocol = (s32)orig_tuple.dst.protonum; + + /* + * Extract information from the conntrack connection. We're only interested + * in nominal connection information (i.e. we're ignoring any NAT information). + */ + if (likely(nf_ct_l3num(ct) == AF_INET)) { + sid.src_ip.ip = (__be32)orig_tuple.src.u3.ip; + sid.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip; + is_v4 = true; + } else if (likely(nf_ct_l3num(ct) == AF_INET6)) { + sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6); + sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6); + is_v4 = false; + } else { + DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n"); + return NOTIFY_DONE; + } + + switch (sid.protocol) { + case IPPROTO_TCP: + sid.src_port = orig_tuple.src.u.tcp.port; + sid.dest_port = orig_tuple.dst.u.tcp.port; + break; + + case IPPROTO_UDP: + sid.src_port = orig_tuple.src.u.udp.port; + sid.dest_port = orig_tuple.dst.u.udp.port; + break; + + default: + DEBUG_TRACE("unhandled protocol: %d\n", sid.protocol); + return NOTIFY_DONE; + } + + /* + * Check for an updated mark + */ + if ((events & (1 << IPCT_MARK)) && (ct->mark != 0)) { + struct sfe_connection_mark mark; + + mark.protocol = sid.protocol; + mark.src_ip = sid.src_ip; + mark.dest_ip = sid.dest_ip; + mark.src_port = sid.src_port; + mark.dest_port = sid.dest_port; + mark.mark = ct->mark; + + is_v4 ? sfe_ipv4_mark_rule(&mark) : sfe_ipv6_mark_rule(&mark); + fast_classifier_update_mark(&mark, is_v4); + } + + /* + * We're only interested in destroy events at this point + */ + if (unlikely(!(events & (1 << IPCT_DESTROY)))) { + DEBUG_TRACE("ignoring non-destroy event\n"); + return NOTIFY_DONE; + } + + if (is_v4) { + DEBUG_TRACE("Try to clean up: proto: %d src_ip: %pI4 dst_ip: %pI4, src_port: %d, dst_port: %d\n", + sid.protocol, &sid.src_ip, &sid.dest_ip, ntohs(sid.src_port), ntohs(sid.dest_port)); + } else { + DEBUG_TRACE("Try to clean up: proto: %d src_ip: %pI6 dst_ip: %pI6, src_port: %d, dst_port: %d\n", + sid.protocol, &sid.src_ip, &sid.dest_ip, ntohs(sid.src_port), ntohs(sid.dest_port)); + } + + spin_lock_bh(&sfe_connections_lock); + + conn = fast_classifier_find_conn(&sid.src_ip, &sid.dest_ip, sid.src_port, sid.dest_port, sid.protocol, is_v4); + if (conn && conn->offloaded) { + if (is_v4) { + fc_msg.ethertype = AF_INET; + fc_msg.src_saddr.in = *((struct in_addr *)&conn->sic->src_ip); + fc_msg.dst_saddr.in = *((struct in_addr *)&conn->sic->dest_ip_xlate); + } else { + fc_msg.ethertype = AF_INET6; + fc_msg.src_saddr.in6 = *((struct in6_addr *)&conn->sic->src_ip); + fc_msg.dst_saddr.in6 = *((struct in6_addr *)&conn->sic->dest_ip_xlate); + } + + fc_msg.proto = conn->sic->protocol; + fc_msg.sport = conn->sic->src_port; + fc_msg.dport = conn->sic->dest_port_xlate; + memcpy(fc_msg.smac, conn->smac, ETH_ALEN); + memcpy(fc_msg.dmac, conn->dmac, ETH_ALEN); + offloaded = 1; + } + + if (conn) { + DEBUG_TRACE("Free connection\n"); + + hash_del(&conn->hl); + sfe_connections_size--; + kfree(conn->sic); + kfree(conn); + } else { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_DESTROY_MISS); + } + + spin_unlock_bh(&sfe_connections_lock); + + is_v4 ? sfe_ipv4_destroy_rule(&sid) : sfe_ipv6_destroy_rule(&sid); + + if (offloaded) { + fast_classifier_send_genl_msg(FAST_CLASSIFIER_C_DONE, &fc_msg); + } + + return NOTIFY_DONE; +} + +/* + * Netfilter conntrack event system to monitor connection tracking changes + */ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS +static struct notifier_block fast_classifier_conntrack_notifier = { + .notifier_call = fast_classifier_conntrack_event, +}; +#else +static struct nf_ct_event_notifier fast_classifier_conntrack_notifier = { + .fcn = fast_classifier_conntrack_event, +}; +#endif +#endif + +/* + * Structure to establish a hook into the post routing netfilter point - this + * will pick up local outbound and packets going from one interface to another. + * + * Note: see include/linux/netfilter_ipv4.h for info related to priority levels. + * We want to examine packets after NAT translation and any ALG processing. + */ +static struct nf_hook_ops fast_classifier_ops_post_routing[] __read_mostly = { + SFE_IPV4_NF_POST_ROUTING_HOOK(__fast_classifier_ipv4_post_routing_hook), + SFE_IPV6_NF_POST_ROUTING_HOOK(__fast_classifier_ipv6_post_routing_hook), +}; + +/* + * fast_classifier_sync_rule() + * Synchronize a connection's state. + */ +static void fast_classifier_sync_rule(struct sfe_connection_sync *sis) +{ + struct nf_conntrack_tuple_hash *h; + struct nf_conntrack_tuple tuple; + struct nf_conn *ct; + SFE_NF_CONN_ACCT(acct); + + /* + * Create a tuple so as to be able to look up a connection + */ + memset(&tuple, 0, sizeof(tuple)); + tuple.src.u.all = (__be16)sis->src_port; + tuple.dst.dir = IP_CT_DIR_ORIGINAL; + tuple.dst.protonum = (u8)sis->protocol; + tuple.dst.u.all = (__be16)sis->dest_port; + + if (sis->is_v6) { + tuple.src.u3.in6 = *((struct in6_addr *)sis->src_ip.ip6); + tuple.dst.u3.in6 = *((struct in6_addr *)sis->dest_ip.ip6); + tuple.src.l3num = AF_INET6; + + DEBUG_TRACE("update connection - p: %d, s: %pI6:%u, d: %pI6:%u\n", + (int)tuple.dst.protonum, + &tuple.src.u3.in6, (unsigned int)ntohs(tuple.src.u.all), + &tuple.dst.u3.in6, (unsigned int)ntohs(tuple.dst.u.all)); + } else { + tuple.src.u3.ip = sis->src_ip.ip; + tuple.dst.u3.ip = sis->dest_ip.ip; + tuple.src.l3num = AF_INET; + + DEBUG_TRACE("update connection - p: %d, s: %pI4:%u, d: %pI4:%u\n", + (int)tuple.dst.protonum, + &tuple.src.u3.ip, (unsigned int)ntohs(tuple.src.u.all), + &tuple.dst.u3.ip, (unsigned int)ntohs(tuple.dst.u.all)); + } + + /* + * Update packet count for ingress on bridge device + */ + if (skip_to_bridge_ingress) { + struct rtnl_link_stats64 nlstats; + nlstats.tx_packets = 0; + nlstats.tx_bytes = 0; + + if (sis->src_dev && IFF_EBRIDGE && + (sis->src_new_packet_count || sis->src_new_byte_count)) { + nlstats.rx_packets = sis->src_new_packet_count; + nlstats.rx_bytes = sis->src_new_byte_count; + spin_lock_bh(&sfe_connections_lock); + br_dev_update_stats(sis->src_dev, &nlstats); + spin_unlock_bh(&sfe_connections_lock); + } + if (sis->dest_dev && IFF_EBRIDGE && + (sis->dest_new_packet_count || sis->dest_new_byte_count)) { + nlstats.rx_packets = sis->dest_new_packet_count; + nlstats.rx_bytes = sis->dest_new_byte_count; + spin_lock_bh(&sfe_connections_lock); + br_dev_update_stats(sis->dest_dev, &nlstats); + spin_unlock_bh(&sfe_connections_lock); + } + } + + /* + * Look up conntrack connection + */ + h = nf_conntrack_find_get(&init_net, SFE_NF_CT_DEFAULT_ZONE, &tuple); + if (unlikely(!h)) { + DEBUG_TRACE("no connection found\n"); + return; + } + + ct = nf_ct_tuplehash_to_ctrack(h); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)) + NF_CT_ASSERT(ct->timeout.data == (unsigned long)ct); +#endif /*KERNEL_VERSION(4, 9, 0)*/ + + /* + * Only update if this is not a fixed timeout + */ + if (!test_bit(IPS_FIXED_TIMEOUT_BIT, &ct->status)) { + spin_lock_bh(&ct->lock); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)) + ct->timeout += sis->delta_jiffies; +#else + ct->timeout.expires += sis->delta_jiffies; +#endif /*KERNEL_VERSION(4, 9, 0)*/ + spin_unlock_bh(&ct->lock); + } + + acct = nf_conn_acct_find(ct); + if (acct) { + spin_lock_bh(&ct->lock); + atomic64_add(sis->src_new_packet_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_ORIGINAL].packets); + atomic64_add(sis->src_new_byte_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_ORIGINAL].bytes); + atomic64_add(sis->dest_new_packet_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_REPLY].packets); + atomic64_add(sis->dest_new_byte_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_REPLY].bytes); + spin_unlock_bh(&ct->lock); + } + + switch (sis->protocol) { + case IPPROTO_TCP: + spin_lock_bh(&ct->lock); + if (ct->proto.tcp.seen[0].td_maxwin < sis->src_td_max_window) { + ct->proto.tcp.seen[0].td_maxwin = sis->src_td_max_window; + } + if ((s32)(ct->proto.tcp.seen[0].td_end - sis->src_td_end) < 0) { + ct->proto.tcp.seen[0].td_end = sis->src_td_end; + } + if ((s32)(ct->proto.tcp.seen[0].td_maxend - sis->src_td_max_end) < 0) { + ct->proto.tcp.seen[0].td_maxend = sis->src_td_max_end; + } + if (ct->proto.tcp.seen[1].td_maxwin < sis->dest_td_max_window) { + ct->proto.tcp.seen[1].td_maxwin = sis->dest_td_max_window; + } + if ((s32)(ct->proto.tcp.seen[1].td_end - sis->dest_td_end) < 0) { + ct->proto.tcp.seen[1].td_end = sis->dest_td_end; + } + if ((s32)(ct->proto.tcp.seen[1].td_maxend - sis->dest_td_max_end) < 0) { + ct->proto.tcp.seen[1].td_maxend = sis->dest_td_max_end; + } + spin_unlock_bh(&ct->lock); + break; + } + + /* + * Release connection + */ + nf_ct_put(ct); +} + +/* + * fast_classifier_device_event() + */ +static int fast_classifier_device_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + struct net_device *dev = SFE_DEV_EVENT_PTR(ptr); + + if (dev && (event == NETDEV_DOWN)) { + sfe_ipv4_destroy_all_rules_for_dev(dev); + sfe_ipv6_destroy_all_rules_for_dev(dev); + } + + return NOTIFY_DONE; +} + +/* + * fast_classifier_inet_event() + */ +static int fast_classifier_inet_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev; + + if (dev && (event == NETDEV_DOWN)) { + sfe_ipv4_destroy_all_rules_for_dev(dev); + } + + return NOTIFY_DONE; +} + +/* + * fast_classifier_inet6_event() + */ +static int fast_classifier_inet6_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + struct net_device *dev = ((struct inet6_ifaddr *)ptr)->idev->dev; + + if (dev && (event == NETDEV_DOWN)) { + sfe_ipv6_destroy_all_rules_for_dev(dev); + } + + return NOTIFY_DONE; +} + +/* + * fast_classifier_get_offload_at_pkts() + */ +static ssize_t fast_classifier_get_offload_at_pkts(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return snprintf(buf, (ssize_t)PAGE_SIZE, "%d\n", offload_at_pkts); +} + +/* + * fast_classifier_set_offload_at_pkts() + */ +static ssize_t fast_classifier_set_offload_at_pkts(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t size) +{ + long new; + int ret; + + ret = kstrtol(buf, 0, &new); + if (ret == -EINVAL || ((int)new != new)) + return -EINVAL; + + offload_at_pkts = new; + + return size; +} + +/* + * fast_classifier_get_debug_info() + */ +static ssize_t fast_classifier_get_debug_info(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + size_t len = 0; + struct sfe_connection *conn; + u32 i; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + struct hlist_node *node; +#endif + + spin_lock_bh(&sfe_connections_lock); + len += scnprintf(buf, PAGE_SIZE - len, "size=%d offload=%d offload_no_match=%d" + " offloaded=%d done=%d offloaded_fail=%d done_fail=%d\n", + sfe_connections_size, + atomic_read(&offload_msgs), + atomic_read(&offload_no_match_msgs), + atomic_read(&offloaded_msgs), + atomic_read(&done_msgs), + atomic_read(&offloaded_fail_msgs), + atomic_read(&done_fail_msgs)); + sfe_hash_for_each(fc_conn_ht, i, node, conn, hl) { + len += scnprintf(buf + len, PAGE_SIZE - len, + (conn->is_v4 ? "o=%d, p=%d [%pM]:%pI4:%u %pI4:%u:[%pM] m=%08x h=%d\n" : "o=%d, p=%d [%pM]:%pI6:%u %pI6:%u:[%pM] m=%08x h=%d\n"), + conn->offloaded, + conn->sic->protocol, + conn->sic->src_mac, + &conn->sic->src_ip, + ntohs(conn->sic->src_port), + &conn->sic->dest_ip, + ntohs(conn->sic->dest_port), + conn->sic->dest_mac_xlate, + conn->sic->mark, + conn->hits); + } + spin_unlock_bh(&sfe_connections_lock); + + return len; +} + +/* + * fast_classifier_get_skip_bridge_ingress() + */ +static ssize_t fast_classifier_get_skip_bridge_ingress(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return snprintf(buf, (ssize_t)PAGE_SIZE, "%d\n", skip_to_bridge_ingress); +} + +/* + * fast_classifier_set_skip_bridge_ingress() + */ +static ssize_t fast_classifier_set_skip_bridge_ingress(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t size) +{ + long new; + int ret; + + ret = kstrtol(buf, 0, &new); + if (ret == -EINVAL || ((int)new != new)) + return -EINVAL; + + skip_to_bridge_ingress = new ? 1 : 0; + + return size; +} + +/* + * fast_classifier_get_exceptions + * dump exception counters + */ +static ssize_t fast_classifier_get_exceptions(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + int idx, len; + struct fast_classifier *sc = &__sc; + + spin_lock_bh(&sc->lock); + for (len = 0, idx = 0; idx < FAST_CL_EXCEPTION_MAX; idx++) { + if (sc->exceptions[idx]) { + len += snprintf(buf + len, (ssize_t)(PAGE_SIZE - len), "%s = %d\n", fast_classifier_exception_events_string[idx], sc->exceptions[idx]); + } + } + spin_unlock_bh(&sc->lock); + + return len; +} + +/* + * sysfs attributes. + */ +static const struct device_attribute fast_classifier_offload_at_pkts_attr = + __ATTR(offload_at_pkts, S_IWUSR | S_IRUGO, fast_classifier_get_offload_at_pkts, fast_classifier_set_offload_at_pkts); +static const struct device_attribute fast_classifier_debug_info_attr = + __ATTR(debug_info, S_IRUGO, fast_classifier_get_debug_info, NULL); +static const struct device_attribute fast_classifier_skip_bridge_ingress = + __ATTR(skip_to_bridge_ingress, S_IWUSR | S_IRUGO, fast_classifier_get_skip_bridge_ingress, fast_classifier_set_skip_bridge_ingress); +static const struct device_attribute fast_classifier_exceptions_attr = + __ATTR(exceptions, S_IRUGO, fast_classifier_get_exceptions, NULL); + +/* + * fast_classifier_init() + */ +static int __init fast_classifier_init(void) +{ + struct fast_classifier *sc = &__sc; + int result = -1; +#ifdef CONFIG_SFE_ECM + int (*fast_recv)(struct sk_buff *skb); +#endif + + printk(KERN_ALERT "fast-classifier: starting up\n"); + DEBUG_INFO("SFE CM init\n"); + + hash_init(fc_conn_ht); + + /* + * Create sys/fast_classifier + */ + sc->sys_fast_classifier = kobject_create_and_add("fast_classifier", NULL); + if (!sc->sys_fast_classifier) { + DEBUG_ERROR("failed to register fast_classifier\n"); + goto exit1; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + if (result) { + DEBUG_ERROR("failed to register offload at pkgs: %d\n", result); + goto exit2; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + if (result) { + DEBUG_ERROR("failed to register debug dev: %d\n", result); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + goto exit2; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_skip_bridge_ingress.attr); + if (result) { + DEBUG_ERROR("failed to register skip bridge on ingress: %d\n", result); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + goto exit2; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_exceptions_attr.attr); + if (result) { + DEBUG_ERROR("failed to register exceptions file: %d\n", result); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_skip_bridge_ingress.attr); + goto exit2; + } + + sc->dev_notifier.notifier_call = fast_classifier_device_event; + sc->dev_notifier.priority = 1; + register_netdevice_notifier(&sc->dev_notifier); + + sc->inet_notifier.notifier_call = fast_classifier_inet_event; + sc->inet_notifier.priority = 1; + register_inetaddr_notifier(&sc->inet_notifier); + + sc->inet6_notifier.notifier_call = fast_classifier_inet6_event; + sc->inet6_notifier.priority = 1; + register_inet6addr_notifier(&sc->inet6_notifier); + + /* + * Register our netfilter hooks. + */ + result = nf_register_net_hooks(&init_net, fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing)); + if (result < 0) { + DEBUG_ERROR("can't register nf post routing hook: %d\n", result); + goto exit3; + } + +#ifdef CONFIG_NF_CONNTRACK_EVENTS + /* + * Register a notifier hook to get fast notifications of expired connections. + */ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + result = nf_conntrack_register_chain_notifier(&init_net, &fast_classifier_conntrack_notifier); +#else + result = nf_conntrack_register_notifier(&init_net, &fast_classifier_conntrack_notifier); +#endif + if (result < 0) { + DEBUG_ERROR("can't register nf notifier hook: %d\n", result); + goto exit4; + } +#endif + + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) + result = genl_register_family(&fast_classifier_gnl_family); + if (result) { + DEBUG_ERROR("failed to register genl family: %d\n", result); + goto exit5; + } +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)) + result = genl_register_family_with_ops_groups(&fast_classifier_gnl_family, + fast_classifier_gnl_ops, + fast_classifier_genl_mcgrp); + if (result) { + DEBUG_ERROR("failed to register genl ops: %d\n", result); + goto exit5; + } +#else + result = genl_register_family(&fast_classifier_gnl_family); + if (result) { + printk(KERN_CRIT "unable to register genl family\n"); + goto exit5; + } + + result = genl_register_ops(&fast_classifier_gnl_family, fast_classifier_gnl_ops); + if (result) { + printk(KERN_CRIT "unable to register ops\n"); + goto exit6; + } + + result = genl_register_mc_group(&fast_classifier_gnl_family, + fast_classifier_genl_mcgrp); + if (result) { + printk(KERN_CRIT "unable to register multicast group\n"); + goto exit6; + } +#endif + + printk(KERN_ALERT "fast-classifier: registered\n"); + + spin_lock_init(&sc->lock); + + /* + * Hook the receive path in the network stack. + */ +#ifdef CONFIG_SFE_ECM + rcu_read_lock(); + fast_recv = rcu_dereference(athrs_fast_nat_recv); + rcu_read_unlock(); + if (!fast_recv) { + BUG_ON(athrs_fast_nat_recv); + } +#else + BUG_ON(athrs_fast_nat_recv); +#endif + RCU_INIT_POINTER(athrs_fast_nat_recv, fast_classifier_recv); + + /* + * Hook the shortcut sync callback. + */ + sfe_ipv4_register_sync_rule_callback(fast_classifier_sync_rule); + sfe_ipv6_register_sync_rule_callback(fast_classifier_sync_rule); + return 0; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)) +exit6: + genl_unregister_family(&fast_classifier_gnl_family); +#endif + +exit5: +#ifdef CONFIG_NF_CONNTRACK_EVENTS +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + nf_conntrack_unregister_chain_notifier(&init_net, &fast_classifier_conntrack_notifier); +#else + nf_conntrack_unregister_notifier(&init_net, &fast_classifier_conntrack_notifier); +#endif + +exit4: +#endif + nf_unregister_net_hooks(&init_net, fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing)); + +exit3: + unregister_inetaddr_notifier(&sc->inet_notifier); + unregister_inet6addr_notifier(&sc->inet6_notifier); + unregister_netdevice_notifier(&sc->dev_notifier); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_skip_bridge_ingress.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_exceptions_attr.attr); + +exit2: + kobject_put(sc->sys_fast_classifier); + +exit1: + return result; +} + +/* + * fast_classifier_exit() + */ +static void __exit fast_classifier_exit(void) +{ + struct fast_classifier *sc = &__sc; + int result = -1; + + DEBUG_INFO("SFE CM exit\n"); + printk(KERN_ALERT "fast-classifier: shutting down\n"); + + /* + * Unregister our sync callback. + */ + sfe_ipv4_register_sync_rule_callback(NULL); + sfe_ipv6_register_sync_rule_callback(NULL); + + /* + * Unregister our receive callback. + */ + RCU_INIT_POINTER(athrs_fast_nat_recv, NULL); + + /* + * Wait for all callbacks to complete. + */ + rcu_barrier(); + + /* + * Destroy all connections. + */ + sfe_ipv4_destroy_all_rules_for_dev(NULL); + sfe_ipv6_destroy_all_rules_for_dev(NULL); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)) + result = genl_unregister_ops(&fast_classifier_gnl_family, fast_classifier_gnl_ops); + if (result != 0) { + printk(KERN_CRIT "Unable to unreigster genl_ops\n"); + } +#endif + + result = genl_unregister_family(&fast_classifier_gnl_family); + if (result != 0) { + printk(KERN_CRIT "Unable to unregister genl_family\n"); + } + +#ifdef CONFIG_NF_CONNTRACK_EVENTS +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + nf_conntrack_unregister_chain_notifier(&init_net, &fast_classifier_conntrack_notifier); +#else + nf_conntrack_unregister_notifier(&init_net, &fast_classifier_conntrack_notifier); +#endif +#endif + nf_unregister_net_hooks(&init_net, fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing)); + + unregister_inet6addr_notifier(&sc->inet6_notifier); + unregister_inetaddr_notifier(&sc->inet_notifier); + unregister_netdevice_notifier(&sc->dev_notifier); + + kobject_put(sc->sys_fast_classifier); +} + +module_init(fast_classifier_init) +module_exit(fast_classifier_exit) + +MODULE_DESCRIPTION("Shortcut Forwarding Engine - Connection Manager"); +MODULE_LICENSE("Dual BSD/GPL"); + diff --git a/fast-classifier/src/fast-classifier.h b/fast-classifier/src/fast-classifier.h new file mode 100644 index 000000000..6b7a18cf6 --- /dev/null +++ b/fast-classifier/src/fast-classifier.h @@ -0,0 +1,57 @@ +/* + * User space header to send message to the fast classifier + * + * Copyright (c) 2013,2016 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#define FAST_CLASSIFIER_GENL_VERSION (1) +#define FAST_CLASSIFIER_GENL_NAME "FC" +#define FAST_CLASSIFIER_GENL_MCGRP "FC_MCGRP" +#define FAST_CLASSIFIER_GENL_HDRSIZE (0) + +enum { + FAST_CLASSIFIER_A_UNSPEC, + FAST_CLASSIFIER_A_TUPLE, + __FAST_CLASSIFIER_A_MAX, +}; + +#define FAST_CLASSIFIER_A_MAX (__FAST_CLASSIFIER_A_MAX - 1) + +enum { + FAST_CLASSIFIER_C_UNSPEC, + FAST_CLASSIFIER_C_OFFLOAD, + FAST_CLASSIFIER_C_OFFLOADED, + FAST_CLASSIFIER_C_DONE, + __FAST_CLASSIFIER_C_MAX, +}; + +#define FAST_CLASSIFIER_C_MAX (__FAST_CLASSIFIER_C_MAX - 1) + +struct fast_classifier_tuple { + unsigned short ethertype; + unsigned char proto; + union { + struct in_addr in; + struct in6_addr in6; + } src_saddr; + union { + struct in_addr in; + struct in6_addr in6; + } dst_saddr; + unsigned short sport; + unsigned short dport; + unsigned char smac[ETH_ALEN]; + unsigned char dmac[ETH_ALEN]; +}; diff --git a/fast-classifier/src/nl_classifier_test.c b/fast-classifier/src/nl_classifier_test.c new file mode 100644 index 000000000..639417964 --- /dev/null +++ b/fast-classifier/src/nl_classifier_test.c @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2016 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include + +#define NL_CLASSIFIER_GENL_VERSION 1 +#define NL_CLASSIFIER_GENL_FAMILY "FC" +#define NL_CLASSIFIER_GENL_GROUP "FC_MCGRP" +#define NL_CLASSIFIER_GENL_HDRSIZE 0 + +enum NL_CLASSIFIER_CMD { + NL_CLASSIFIER_CMD_UNSPEC, + NL_CLASSIFIER_CMD_ACCEL, + NL_CLASSIFIER_CMD_ACCEL_OK, + NL_CLASSIFIER_CMD_CONNECTION_CLOSED, + NL_CLASSIFIER_CMD_MAX, +}; + +enum NL_CLASSIFIER_ATTR { + NL_CLASSIFIER_ATTR_UNSPEC, + NL_CLASSIFIER_ATTR_TUPLE, + NL_CLASSIFIER_ATTR_MAX, +}; + +union nl_classifier_tuple_ip { + struct in_addr in; + struct in6_addr in6; +}; + +struct nl_classifier_tuple { + unsigned short af; + unsigned char proto; + union nl_classifier_tuple_ip src_ip; + union nl_classifier_tuple_ip dst_ip; + unsigned short sport; + unsigned short dport; + unsigned char smac[6]; + unsigned char dmac[6]; +}; + +struct nl_classifier_instance { + struct nl_sock *sock; + int family_id; + int group_id; + int stop; +}; + +struct nl_classifier_instance nl_cls_inst; + +static struct nla_policy nl_classifier_genl_policy[(NL_CLASSIFIER_ATTR_MAX+1)] = { + [NL_CLASSIFIER_ATTR_TUPLE] = { .type = NLA_UNSPEC }, +}; + +void nl_classifier_dump_nl_tuple(struct nl_classifier_tuple *tuple) +{ + char ip_str[64]; + + printf("protocol = %s\n", (tuple->proto == IPPROTO_UDP) ? "udp" : ((tuple->proto == IPPROTO_TCP) ? "tcp" : "unknown")); + printf("source ip = %s\n", inet_ntop(tuple->af, &tuple->src_ip, ip_str, sizeof(ip_str))); + printf("destination ip = %s\n", inet_ntop(tuple->af, &tuple->dst_ip, ip_str, sizeof(ip_str))); + printf("source port = %d\n", ntohs(tuple->sport)); + printf("destination port = %d\n", ntohs(tuple->dport)); +} + +int nl_classifier_msg_recv(struct nl_msg *msg, void *arg) +{ + struct nlmsghdr *nlh = nlmsg_hdr(msg); + struct genlmsghdr *gnlh = nlmsg_data(nlh); + struct nlattr *attrs[(NL_CLASSIFIER_ATTR_MAX+1)]; + + genlmsg_parse(nlh, NL_CLASSIFIER_GENL_HDRSIZE, attrs, NL_CLASSIFIER_ATTR_MAX, nl_classifier_genl_policy); + + switch (gnlh->cmd) { + case NL_CLASSIFIER_CMD_ACCEL_OK: + printf("Acceleration successful:\n"); + nl_classifier_dump_nl_tuple(nla_data(attrs[NL_CLASSIFIER_ATTR_TUPLE])); + return NL_OK; + case NL_CLASSIFIER_CMD_CONNECTION_CLOSED: + printf("Connection is closed:\n"); + nl_classifier_dump_nl_tuple(nla_data(attrs[NL_CLASSIFIER_ATTR_TUPLE])); + return NL_OK; + default: + printf("nl classifier received unknow message %d\n", gnlh->cmd); + } + + return NL_SKIP; +} + +void nl_classifier_offload(struct nl_classifier_instance *inst, + unsigned char proto, unsigned long *src_saddr, + unsigned long *dst_saddr, unsigned short sport, + unsigned short dport, int af) +{ + struct nl_msg *msg; + int ret; + struct nl_classifier_tuple classifier_msg; + + memset(&classifier_msg, 0, sizeof(classifier_msg)); + classifier_msg.af = af; + classifier_msg.proto = proto; + memcpy(&classifier_msg.src_ip, src_saddr, (af == AF_INET ? 4 : 16)); + memcpy(&classifier_msg.dst_ip, dst_saddr, (af == AF_INET ? 4 : 16)); + classifier_msg.sport = sport; + classifier_msg.dport = dport; + + msg = nlmsg_alloc(); + if (!msg) { + printf("Unable to allocate message\n"); + return; + } + + genlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, inst->family_id, + NL_CLASSIFIER_GENL_HDRSIZE, NLM_F_REQUEST, + NL_CLASSIFIER_CMD_ACCEL, NL_CLASSIFIER_GENL_VERSION); + nla_put(msg, NL_CLASSIFIER_ATTR_TUPLE, sizeof(classifier_msg), &classifier_msg); + + ret = nl_send_auto(inst->sock, msg); + if (ret < 0) { + printf("send netlink message failed.\n"); + nlmsg_free(msg); + return; + } + + nlmsg_free(msg); + printf("nl classifier offload connection successful\n"); +} + +int nl_classifier_init(struct nl_classifier_instance *inst) +{ + int ret; + + inst->sock = nl_socket_alloc(); + if (!inst->sock) { + printf("Unable to allocation socket.\n"); + return -1; + } + genl_connect(inst->sock); + + inst->family_id = genl_ctrl_resolve(inst->sock, NL_CLASSIFIER_GENL_FAMILY); + if (inst->family_id < 0) { + printf("Unable to resolve family %s\n", NL_CLASSIFIER_GENL_FAMILY); + goto init_failed; + } + + inst->group_id = genl_ctrl_resolve_grp(inst->sock, NL_CLASSIFIER_GENL_FAMILY, NL_CLASSIFIER_GENL_GROUP); + if (inst->group_id < 0) { + printf("Unable to resolve mcast group %s\n", NL_CLASSIFIER_GENL_GROUP); + goto init_failed; + } + + ret = nl_socket_add_membership(inst->sock, inst->group_id); + if (ret < 0) { + printf("Unable to add membership\n"); + goto init_failed; + } + + nl_socket_disable_seq_check(inst->sock); + nl_socket_modify_cb(inst->sock, NL_CB_VALID, NL_CB_CUSTOM, nl_classifier_msg_recv, NULL); + + printf("nl classifier init successful\n"); + return 0; + +init_failed: + if (inst->sock) { + nl_close(inst->sock); + nl_socket_free(inst->sock); + inst->sock = NULL; + } + return -1; +} + +void nl_classifier_exit(struct nl_classifier_instance *inst) +{ + if (inst->sock) { + nl_close(inst->sock); + nl_socket_free(inst->sock); + inst->sock = NULL; + } + printf("nl classifier exit successful\n"); +} + +int nl_classifier_parse_arg(int argc, char *argv[], unsigned char *proto, unsigned long *src_saddr, + unsigned long *dst_saddr, unsigned short *sport, unsigned short *dport, int *af) +{ + int ret; + unsigned short port; + + if (argc < 7) { + printf("help: nl_classifier \n"); + return -1; + } + + if (0 == strncmp(argv[1], "v4", 2)) { + *af = AF_INET; + } else if (0 == strncmp(argv[1], "v6", 2)) { + *af = AF_INET6; + } else { + printf("Address family is not supported"); + return -1; + } + + if (0 == strncmp(argv[2], "udp", 3)) { + *proto = IPPROTO_UDP; + } else if (0 == strncmp(argv[2], "tcp", 3)) { + *proto = IPPROTO_TCP; + } else { + printf("Protocol is not supported"); + return -1; + } + + ret = inet_pton(*af, argv[3], src_saddr); + if (ret <= 0) { + printf("source ip has wrong format\n"); + return -1; + } + + ret = inet_pton(*af, argv[4], dst_saddr); + if (ret <= 0) { + printf("destination ip has wrong format\n"); + return -1; + } + + port = strtol(argv[5], NULL, 0); + *sport = htons(port); + port = strtol(argv[6], NULL, 0); + *dport = htons(port); + + printf("nl classifier parse arguments successful\n"); + return 0; +} + +int main(int argc, char *argv[]) +{ + struct nl_classifier_instance *inst = &nl_cls_inst; + unsigned char proto; + unsigned long src_addr[4]; + unsigned long dst_addr[4]; + unsigned short sport; + unsigned short dport; + int af; + int ret; + + ret = nl_classifier_parse_arg(argc, argv, &proto, src_addr, dst_addr, &sport, &dport, &af); + if (ret < 0) { + printf("Failed to parse arguments\n"); + return ret; + } + + ret = nl_classifier_init(inst); + if (ret < 0) { + printf("Unable to init generic netlink\n"); + return ret; + } + + nl_classifier_offload(inst, proto, src_addr, dst_addr, sport, dport, af); + + /* main loop to listen on message */ + while (!inst->stop) { + nl_recvmsgs_default(inst->sock); + } + + nl_classifier_exit(inst); + + return 0; +} diff --git a/fast-classifier/src/userspace_example.c b/fast-classifier/src/userspace_example.c new file mode 100644 index 000000000..4f4113d99 --- /dev/null +++ b/fast-classifier/src/userspace_example.c @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2013,2016 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include + +#include + +static struct nl_sock *sock; +static struct nl_sock *sock_event; +static int family; +static int grp_id; + +static struct nla_policy fast_classifier_genl_policy[FAST_CLASSIFIER_A_MAX + 1] = { + [FAST_CLASSIFIER_A_TUPLE] = { .type = NLA_UNSPEC }, +}; + +void dump_fc_tuple(struct fast_classifier_tuple *fc_msg) +{ + char src_str[INET_ADDRSTRLEN]; + char dst_str[INET_ADDRSTRLEN]; + + printf("TUPLE: %d, %s, %s, %d, %d" + " SMAC=%02x:%02x:%02x:%02x:%02x:%02x", + " DMAC=%02x:%02x:%02x:%02x:%02x:%02x\n", + fc_msg->proto, + inet_ntop(AF_INET, + &fc_msg->src_saddr.in.s_addr, + src_str, + INET_ADDRSTRLEN), + inet_ntop(AF_INET, + &fc_msg->dst_saddr.in.s_addr, + dst_str, + INET_ADDRSTRLEN), + fc_msg->sport, fc_msg->dport, + fc_msg->smac[0], fc_msg->smac[1], fc_msg->smac[2], + fc_msg->smac[3], fc_msg->smac[4], fc_msg->smac[5], + fc_msg->dmac[0], fc_msg->dmac[1], fc_msg->dmac[2], + fc_msg->dmac[3], fc_msg->dmac[4], fc_msg->dmac[5]); +} + +static int parse_cb(struct nl_msg *msg, void *arg) +{ + struct nlmsghdr *nlh = nlmsg_hdr(msg); + struct genlmsghdr *gnlh = nlmsg_data(nlh); + struct nlattr *attrs[FAST_CLASSIFIER_A_MAX]; + + genlmsg_parse(nlh, 0, attrs, FAST_CLASSIFIER_A_MAX, fast_classifier_genl_policy); + + switch (gnlh->cmd) { + case FAST_CLASSIFIER_C_OFFLOADED: + printf("Got a offloaded message\n"); + dump_fc_tuple(nla_data(attrs[FAST_CLASSIFIER_A_TUPLE])); + return NL_OK; + case FAST_CLASSIFIER_C_DONE: + printf("Got a done message\n"); + dump_fc_tuple(nla_data(attrs[FAST_CLASSIFIER_A_TUPLE])); + return NL_OK; + } + + return NL_SKIP; +} + +int fast_classifier_init(void) +{ + int err; + + sock = nl_socket_alloc(); + if (!sock) { + printf("Unable to allocation socket.\n"); + return -1; + } + genl_connect(sock); + + sock_event = nl_socket_alloc(); + if (!sock_event) { + nl_close(sock); + nl_socket_free(sock); + printf("Unable to allocation socket.\n"); + return -1; + } + genl_connect(sock_event); + + family = genl_ctrl_resolve(sock, FAST_CLASSIFIER_GENL_NAME); + if (family < 0) { + nl_close(sock_event); + nl_close(sock); + nl_socket_free(sock); + nl_socket_free(sock_event); + printf("Unable to resolve family\n"); + return -1; + } + + grp_id = genl_ctrl_resolve_grp(sock, FAST_CLASSIFIER_GENL_NAME, + FAST_CLASSIFIER_GENL_MCGRP); + if (grp_id < 0) { + printf("Unable to resolve mcast group\n"); + return -1; + } + + err = nl_socket_add_membership(sock_event, grp_id); + if (err < 0) { + printf("Unable to add membership\n"); + return -1; + } + + nl_socket_disable_seq_check(sock_event); + nl_socket_modify_cb(sock_event, NL_CB_VALID, NL_CB_CUSTOM, parse_cb, NULL); + + return 0; +} + +void fast_classifier_close(void) +{ + nl_close(sock_event); + nl_close(sock); + nl_socket_free(sock_event); + nl_socket_free(sock); +} + +void fast_classifier_ipv4_offload(unsigned char proto, unsigned long src_saddr, + unsigned long dst_saddr, unsigned short sport, + unsigned short dport) +{ + struct nl_msg *msg; + int ret; +#ifdef DEBUG + char src_str[INET_ADDRSTRLEN]; + char dst_str[INET_ADDRSTRLEN]; +#endif + struct fast_classifier_tuple fc_msg; + +#ifdef DEBUG + printf("DEBUG: would offload: %d, %s, %s, %d, %d\n", proto, + inet_ntop(AF_INET, &src_saddr, src_str, INET_ADDRSTRLEN), + inet_ntop(AF_INET, &dst_saddr, dst_str, INET_ADDRSTRLEN), + sport, dport); +#endif + + fc_msg.proto = proto; + fc_msg.src_saddr.in.s_addr = src_saddr; + fc_msg.dst_saddr.in.s_addr = dst_saddr; + fc_msg.sport = sport; + fc_msg.dport = dport; + fc_msg.smac[0] = 'a'; + fc_msg.smac[1] = 'b'; + fc_msg.smac[2] = 'c'; + fc_msg.smac[3] = 'd'; + fc_msg.smac[4] = 'e'; + fc_msg.smac[5] = 'f'; + fc_msg.dmac[0] = 'f'; + fc_msg.dmac[1] = 'e'; + fc_msg.dmac[2] = 'd'; + fc_msg.dmac[3] = 'c'; + fc_msg.dmac[4] = 'b'; + fc_msg.dmac[5] = 'a'; + + if (fast_classifier_init() < 0) { + printf("Unable to init generic netlink\n"); + exit(1); + } + + msg = nlmsg_alloc(); + if (!msg) { + nl_socket_free(sock); + printf("Unable to allocate message\n"); + return; + } + + genlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, family, + FAST_CLASSIFIER_GENL_HDRSIZE, NLM_F_REQUEST, + FAST_CLASSIFIER_C_OFFLOAD, FAST_CLASSIFIER_GENL_VERSION); + nla_put(msg, 1, sizeof(fc_msg), &fc_msg); + + ret = nl_send_auto_complete(sock, msg); + + nlmsg_free(msg); + if (ret < 0) { + printf("nlmsg_free failed"); + nl_close(sock); + nl_socket_free(sock); + return; + } + + ret = nl_wait_for_ack(sock); + if (ret < 0) { + printf("wait for ack failed"); + nl_close(sock); + nl_socket_free(sock); + return; + } +} + +void fast_classifier_listen_for_messages(void) +{ + printf("waiting for netlink events\n"); + + while (1) { + nl_recvmsgs_default(sock_event); + } +} + +int main(int argc, char *argv[]) +{ + if (fast_classifier_init() < 0) { + printf("Unable to init generic netlink\n"); + exit(1); + } + + fast_classifier_ipv4_offload('a', 0, 0, 0, 0); + + /* this never returns */ + fast_classifier_listen_for_messages(); + + fast_classifier_close(); + + return 0; +} diff --git a/iptables-mod-fullconenat/Makefile b/fullconenat/Makefile similarity index 58% rename from iptables-mod-fullconenat/Makefile rename to fullconenat/Makefile index 279c1eb9a..0fd188e3d 100644 --- a/iptables-mod-fullconenat/Makefile +++ b/fullconenat/Makefile @@ -1,24 +1,26 @@ # -# Copyright (C) 2018 Chion Tang +# Copyright (C) 2022 Chion Tang # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=fullconenat -PKG_RELEASE:=1 +PKG_RELEASE:=9 -PKG_SOURCE_DATE:=2019-10-21 +PKG_SOURCE_DATE:=2022-02-13 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/Chion82/netfilter-full-cone-nat.git -PKG_SOURCE_VERSION:=0cf3b48fd7d2fa81d0297d1fff12bbd0580fc435 +PKG_SOURCE_URL:=https://github.com/llccd/netfilter-full-cone-nat.git +PKG_SOURCE_VERSION:=108a36cbdca17e68c9e6e7fd5e26156a88f738e8 +PKG_MIRROR_HASH:=00d749235271dee194dcd23c22e6e85207ea90192a62a110b2af0b4e4de1971f PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Chion Tang +include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/package.mk define Package/iptables-mod-fullconenat @@ -26,8 +28,7 @@ define Package/iptables-mod-fullconenat SECTION:=net CATEGORY:=Network TITLE:=FULLCONENAT iptables extension - DEPENDS:=+iptables +kmod-ipt-fullconenat - MAINTAINER:=Chion Tang + DEPENDS:=+iptables +kmod-ipt-fullconenat @LINUX_5_4 endef define Package/iptables-mod-fullconenat/install @@ -38,28 +39,24 @@ endef define KernelPackage/ipt-fullconenat SUBMENU:=Netfilter Extensions TITLE:=FULLCONENAT netfilter module - DEPENDS:=+kmod-nf-ipt +kmod-nf-nat - MAINTAINER:=Chion Tang - KCONFIG:=CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y + DEPENDS:=+kmod-nf-ipt +kmod-nf-nat @LINUX_5_4 + KCONFIG:= \ + CONFIG_NF_CONNTRACK_EVENTS=y \ + CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y FILES:=$(PKG_BUILD_DIR)/xt_FULLCONENAT.ko endef include $(INCLUDE_DIR)/kernel-defaults.mk -define Build/Prepare - $(call Build/Prepare/Default) - $(CP) ./files/Makefile $(PKG_BUILD_DIR)/ -endef - define Build/Compile +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ - CROSS_COMPILE="$(TARGET_CROSS)" \ - ARCH="$(LINUX_KARCH)" \ - M="$(PKG_BUILD_DIR)" \ - EXTRA_CFLAGS="$(BUILDFLAGS)" \ - modules + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH="$(LINUX_KARCH)" \ + M="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(BUILDFLAGS)" \ + modules $(call Build/Compile/Default) endef -$(eval $(call BuildPackage,iptables-mod-fullconenat)) $(eval $(call KernelPackage,ipt-fullconenat)) +$(eval $(call BuildPackage,iptables-mod-fullconenat)) diff --git a/fullconenat/patches/001-fix-init-Repeat-definition.patch b/fullconenat/patches/001-fix-init-Repeat-definition.patch new file mode 100644 index 000000000..67c9332c8 --- /dev/null +++ b/fullconenat/patches/001-fix-init-Repeat-definition.patch @@ -0,0 +1,20 @@ +--- a/libip6t_FULLCONENAT.c ++++ b/libip6t_FULLCONENAT.c +@@ -214,6 +214,7 @@ static struct xtables_target fullconenat_tg_reg = { + .x6_options = FULLCONENAT_opts, + }; + ++#define _init __attribute__((constructor)) _INIT + void _init(void) + { + xtables_register_target(&fullconenat_tg_reg); +--- a/libipt_FULLCONENAT.c ++++ b/libipt_FULLCONENAT.c +@@ -235,6 +235,7 @@ static struct xtables_target fullconenat_tg_reg = { + .x6_options = FULLCONENAT_opts, + }; + ++#define _init __attribute__((constructor)) _INIT + void _init(void) + { + xtables_register_target(&fullconenat_tg_reg); diff --git a/fullconenat/patches/001-linux-6.1-support.patch b/fullconenat/patches/001-linux-6.1-support.patch new file mode 100644 index 000000000..41721fb5c --- /dev/null +++ b/fullconenat/patches/001-linux-6.1-support.patch @@ -0,0 +1,26 @@ +--- a/xt_FULLCONENAT.c ++++ b/xt_FULLCONENAT.c +@@ -325,7 +325,11 @@ + /* for now we do the same thing for both --random and --random-fully */ + + /* select a random starting point */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) ++ start = (uint16_t)(get_random_u32() % (u32)range_size); ++#else + start = (uint16_t)(prandom_u32() % (u32)range_size); ++#endif + } else { + + if ((original_port >= min && original_port <= min + range_size - 1) +@@ -995,7 +999,11 @@ + /* for now we do the same thing for both --random and --random-fully */ + + /* select a random starting point */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) ++ start = (uint16_t)(get_random_u32() % (u32)range_size); ++#else + start = (uint16_t)(prandom_u32() % (u32)range_size); ++#endif + } else { + + if ((original_port >= min && original_port <= min + range_size - 1) diff --git a/iptables-mod-fullconenat/files/Makefile b/fullconenat/src/Makefile similarity index 99% rename from iptables-mod-fullconenat/files/Makefile rename to fullconenat/src/Makefile index da52a2a4e..b2f88db33 100644 --- a/iptables-mod-fullconenat/files/Makefile +++ b/fullconenat/src/Makefile @@ -4,4 +4,3 @@ libipt_FULLCONENAT.o: libipt_FULLCONENAT.c $(CC) ${CFLAGS} -fPIC -D_INIT=$*_init -c -o $@ $<; obj-m += xt_FULLCONENAT.o - diff --git a/glorytun-udp/Makefile b/glorytun-udp/Makefile index c2dd9da15..acacab793 100644 --- a/glorytun-udp/Makefile +++ b/glorytun-udp/Makefile @@ -12,8 +12,10 @@ PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/angt/glorytun.git PKG_SOURCE_VERSION:=32267e86a6da05b285bb3bf2b136c105dc0af4bb PKG_NAME:=glorytun-udp -PKG_VERSION:=0.3.4-$(PKG_SOURCE_VERSION) -PKG_RELEASE:=23 +PKG_VERSION:=0.3.4 +PKG_RELEASE:=24 +PKG_LICENSE:=BSD-2-Clause +PKG_LICENSE_FILES:=LICENSE PKG_FIXUP:=autoreconf @@ -46,7 +48,7 @@ define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) init $(1)/etc/init.d/$(PKG_NAME) $(INSTALL_DIR) $(1)/etc/config - touch $(1)/etc/config/glorytun + $(INSTALL_DATA) glorytun-udp.config $(1)/etc/config/glorytun-udp endef $(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/luci-app-glorytun-udp/root/etc/config/glorytun-udp b/glorytun-udp/glorytun-udp.config similarity index 70% rename from luci-app-glorytun-udp/root/etc/config/glorytun-udp rename to glorytun-udp/glorytun-udp.config index d5d356dd6..431da357a 100644 --- a/luci-app-glorytun-udp/root/etc/config/glorytun-udp +++ b/glorytun-udp/glorytun-udp.config @@ -8,3 +8,7 @@ config glorytun-udp 'vpn' option localip '10.255.254.2' option remoteip '10.255.254.1' option mode 'to' + option kxtimeout '7d' + option timetolerance '10m' + option keepalive '25s' + option rateauto '0' \ No newline at end of file diff --git a/glorytun-udp/init b/glorytun-udp/init index 5e50d59df..c9452e734 100755 --- a/glorytun-udp/init +++ b/glorytun-udp/init @@ -50,17 +50,23 @@ start_instance() { key="" if [ "$(uci -q get network.omrvpn)" != "" ]; then - uci -q set network.omrvpn.ifname=$dev + uci -q set network.omrvpn.device=$dev uci -q commit fi _log "starting ${PROG_NAME} ${1} instance $*" + host=$(resolveip $host) + + if [ "$mode" = "to" ]; then + bind="bind from addr :: port 5000 to addr $host port $port" + else + bind="bind from addr $host port $port to addr :: port 5000" + fi procd_open_instance procd_set_param command ${PROG} \ - ${host:+bind ${mode} addr "$host"} \ - ${port:+port "$port"} \ + ${bind} \ ${dev:+dev "$dev"} \ keyfile /tmp/${PROG_NAME}-${1}.key \ persist @@ -75,7 +81,7 @@ start_instance() { procd_close_instance - tc qdisc replace dev ${dev} root cake + #tc qdisc replace dev ${dev} root cake #ip link set $dev txqlen 100 #config_load network diff --git a/glorytun/Makefile b/glorytun/Makefile index 6cd00b7ae..995fbfc44 100644 --- a/glorytun/Makefile +++ b/glorytun/Makefile @@ -9,11 +9,15 @@ include $(TOPDIR)/rules.mk PKG_NAME:=glorytun -PKG_VERSION:=0.0.35 -PKG_RELEASE:=6 +PKG_RELEASE:=8 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_VERSION:=8aebb3efb3b108b1276aa74679e200e003f298de PKG_SOURCE:=glorytun-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://github.com/angt/glorytun/releases/download/v$(PKG_VERSION) -PKG_HASH:=49e4d8ea4ff2990300b37947b0bd0da3c8e0985bc6eddf29f4146306188fff64 +PKG_SOURCE_URL:=https://github.com/Ysurac/glorytun.git +PKG_VERSION:=0.0.35 +PKG_LICENSE:=BSD-2-Clause +PKG_LICENSE_FILES:=LICENSE +PKG_FIXUP:=autoreconf include $(INCLUDE_DIR)/package.mk diff --git a/glorytun/glorytun.config b/glorytun/glorytun.config index 33c93f36f..78f97090c 100644 --- a/glorytun/glorytun.config +++ b/glorytun/glorytun.config @@ -11,4 +11,5 @@ config glorytun 'vpn' option localip '10.255.255.2' option remoteip '10.255.255.1' option multiqueue '1' - option label 'Default VPN' \ No newline at end of file + option label 'Default VPN' + option timeout '10000' \ No newline at end of file diff --git a/glorytun/init b/glorytun/init index f5b868323..d10019fcc 100755 --- a/glorytun/init +++ b/glorytun/init @@ -59,9 +59,10 @@ start_instance() { key="" if [ "$(uci -q get network.omrvpn)" != "" ]; then - uci -q set network.omrvpn.ifname=${dev} + uci -q set network.omrvpn.device=${dev} uci -q commit network fi + _log "starting ${PROG_NAME} ${1} instance $*" procd_open_instance @@ -78,10 +79,10 @@ start_instance() { [ "${multiqueue}" = "1" ] && procd_append_param command multiqueue procd_append_param command \ - retry count -1 const 500000 \ + retry count -1 const 5000000 \ timeout ${timeout} \ keepalive count 5 idle 20 interval 2 \ - buffer-size 32768 + buffer-size 65536 procd_set_param respawn 0 30 0 procd_set_param file /tmp/${PROG_NAME}-${1}.key diff --git a/golang-protobuf/Makefile b/golang-protobuf/Makefile index 04cc930f4..58acdc042 100644 --- a/golang-protobuf/Makefile +++ b/golang-protobuf/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2019-2023 Ycarus (Yannick Chabanois) # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -12,8 +12,8 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/golang/protobuf.git -PKG_SOURCE_VERSION:=347cf4a86c1cb8d262994d8ef5924d4576c5b331 -PKG_SOURCE_DATE:=20190109 +PKG_SOURCE_VERSION:=5d5e8c018a13017f9d5b8bf4fad64aaa42a87308 +PKG_SOURCE_DATE:=20210916 PKG_LICENSE:=BSD-3-Clause PKG_LICENSE_FILES:=LICENSE diff --git a/golang/golang-build.sh b/golang/golang-build.sh index 5e40436bb..01df4aa42 100644 --- a/golang/golang-build.sh +++ b/golang/golang-build.sh @@ -1,4 +1,10 @@ #!/bin/sh +# +# Copyright (C) 2020, 2022 Jeffery To +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# nl=" " @@ -56,7 +62,7 @@ configure() { if [ "$GO_INSTALL_ALL" != 1 ]; then code="$(printf '%s\n' "$files" | grep '\.\(c\|cc\|cpp\|go\|h\|hh\|hpp\|proto\|s\)$')" testdata="$(printf '%s\n' "$files" | grep '/testdata/')" - gomod="$(printf '%s\n' "$files" | grep '/go\.\(mod\|sum\)$')" + gomod="$(printf '%s\n' "$files" | grep '/go\.\(mod\|sum\|work\)$')" for pattern in $GO_INSTALL_EXTRA; do extra="$(printf '%s\n' "$extra"; printf '%s\n' "$files" | grep -e "$pattern")" @@ -114,7 +120,7 @@ build() { if [ "$GO_GO_GENERATE" = 1 ]; then log "Calling go generate" # shellcheck disable=SC2086 - GOOS='' GOARCH='' GO386='' GOARM='' GOMIPS='' GOMIPS64='' \ + GOOS='' GOARCH='' GO386='' GOARM='' GOARM64='' GOMIPS='' GOMIPS64='' GORISCV64=''\ go generate -v $targets log fi diff --git a/golang/golang-compiler.mk b/golang/golang-compiler.mk index e8b4b9156..44defed7b 100644 --- a/golang/golang-compiler.mk +++ b/golang/golang-compiler.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2018, 2020 Jeffery To +# Copyright (C) 2018, 2020-2021, 2023 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -19,15 +19,15 @@ define GoCompiler/Default/CheckHost endef # $(1) source go root -# $(2) destination prefix -# $(3) go version id -# $(4) additional environment variables (optional) +# $(2) additional environment variables (optional) define GoCompiler/Default/Make ( \ cd "$(1)/src" ; \ - $(if $(2),GOROOT_FINAL="$(2)/lib/go-$(3)") \ - $(4) \ - $(BASH) make.bash --no-banner ; \ + $(2) \ + $(BASH) make.bash \ + $(if $(findstring s,$(OPENWRT_VERBOSE)),-v) \ + --no-banner \ + ; \ ) endef @@ -57,9 +57,10 @@ define GoCompiler/Default/Install/Bin $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),api) + $(INSTALL_DATA) -p "$(1)/go.env" "$(2)/lib/go-$(3)/" $(INSTALL_DATA) -p "$(1)/VERSION" "$(2)/lib/go-$(3)/" - for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE PATENTS README.md SECURITY.md; do \ + for file in CONTRIBUTING.md LICENSE PATENTS README.md SECURITY.md; do \ if [ -f "$(1)/$$$$file" ]; then \ $(INSTALL_DATA) -p "$(1)/$$$$file" "$(2)/share/go-$(3)/" ; \ fi ; \ @@ -73,8 +74,10 @@ define GoCompiler/Default/Install/Bin $(INSTALL_BIN) -p "$(1)/bin/$(4)"/* "$(2)/lib/go-$(3)/bin/" endif - $(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg" - $(CP) "$(1)/pkg/$(4)$(if $(5),_$(5))" "$(2)/lib/go-$(3)/pkg/" + if [ -d "$(1)/pkg/$(4)$(if $(5),_$(5))" ]; then \ + $(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg" ; \ + $(CP) "$(1)/pkg/$(4)$(if $(5),_$(5))" "$(2)/lib/go-$(3)/pkg/" ; \ + fi $(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg/tool/$(4)" $(INSTALL_BIN) -p "$(1)/pkg/tool/$(4)"/* "$(2)/lib/go-$(3)/pkg/tool/$(4)/" @@ -95,8 +98,6 @@ define GoCompiler/Default/Install/Doc $(call GoCompiler/Default/Install/make-dirs,$(2),$(3)) $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),doc) - $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),favicon.ico) - $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),robots.txt) endef # $(1) source go root @@ -152,7 +153,7 @@ define GoCompiler/AddProfile # $$(1) additional environment variables (optional) define GoCompiler/$(1)/Make - $$(call GoCompiler/Default/Make,$(2),$(3),$(4),$$(1)) + $$(call GoCompiler/Default/Make,$(2),$$(1)) endef # $$(1) override install prefix (optional) diff --git a/golang/golang-golang-x-crypto/Makefile b/golang/golang-golang-x-crypto/Makefile deleted file mode 100644 index b2d09364f..000000000 --- a/golang/golang-golang-x-crypto/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-crypto -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/crypto.git -PKG_SOURCE_VERSION:=4def268fd1a49955bfb3dda92fe3db4f924f2285 -PKG_SOURCE_DATE:=20190701 -#PKG_MIRROR_HASH:=80b16b203736ac56883d0610edbc5981eb78f15b7b35d11b5ca639f7c3814214 - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/crypto -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-crypto-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go supplementary cryptography libraries - URL:=https://godoc.org/golang.org/x/crypto - DEPENDS:=$(GO_ARCH_DEPENDS) \ - +golang-golang-x-net-dev \ - +golang-golang-x-sys-dev - PKGARCH:=all -endef - -define Package/golang-golang-x-crypto-dev/description -Supplementary Go cryptography libraries. -endef - -$(eval $(call GoSrcPackage,golang-golang-x-crypto-dev)) -$(eval $(call BuildPackage,golang-golang-x-crypto-dev)) diff --git a/golang/golang-golang-x-net/Makefile b/golang/golang-golang-x-net/Makefile deleted file mode 100644 index 979d9be7f..000000000 --- a/golang/golang-golang-x-net/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-net -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/net.git -PKG_SOURCE_VERSION:=afe8f62b1d6bbd81f31868121a50b06d8188e1f9 -PKG_SOURCE_DATE:=20180620 -PKG_MIRROR_HASH:=9a8bb3bf21ea60121d7e87f1bd1af9effbdcd908f758be99457653172d13eb1e - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/net -# exclude http2/h2i to break circular dependency with golang-golang-x-crypto-dev -# since there are no other binaries, can skip compilation -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-net-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go supplementary network libraries - URL:=https://godoc.org/golang.org/x/net - DEPENDS:=$(GO_ARCH_DEPENDS) +golang-golang-x-text-dev - PKGARCH:=all -endef - -define Package/golang-golang-x-net-dev/description -Supplementary Go networking libraries. -endef - -# http2/testdata/draft-ietf-httpbis-http2.xml is a non-free document -# http2/z_spec_test.go uses http2/testdata/draft-ietf-httpbis-http2.xml -define Package/golang-golang-x-net-dev/install - $(call GoPackage/Package/Install/Src,$(1)) - - rm -f $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/testdata/draft-ietf-httpbis-http2.xml - rmdir $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/testdata/ - - rm -f $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/z_spec_test.go -endef - -$(eval $(call GoSrcPackage,golang-golang-x-net-dev)) -$(eval $(call BuildPackage,golang-golang-x-net-dev)) diff --git a/golang/golang-golang-x-sys/Makefile b/golang/golang-golang-x-sys/Makefile deleted file mode 100644 index 5350f3cbe..000000000 --- a/golang/golang-golang-x-sys/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-sys -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/sys.git -PKG_SOURCE_VERSION:=63fc586f45fe72d95d5240a5d5eb95e6503907d3 -PKG_SOURCE_DATE:=20180621 -PKG_MIRROR_HASH:=3afe7936fb9fb291ef9b9cfa88f51576cdc19abbd34240232ce284958ac7dbaf - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/sys -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-sys-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go packages for interaction with the OS - URL:=https://godoc.org/golang.org/x/sys - DEPENDS:=$(GO_ARCH_DEPENDS) - PKGARCH:=all -endef - -define Package/golang-golang-x-sys-dev/description -Supplementary Go packages for low-level interactions with the operating -system. -endef - -$(eval $(call GoSrcPackage,golang-golang-x-sys-dev)) -$(eval $(call BuildPackage,golang-golang-x-sys-dev)) diff --git a/golang/golang-golang-x-text/Makefile b/golang/golang-golang-x-text/Makefile deleted file mode 100644 index e3b1120b9..000000000 --- a/golang/golang-golang-x-text/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-text -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/text.git -PKG_SOURCE_VERSION:=5cec4b58c438bd98288aeb248bab2c1840713d21 -PKG_SOURCE_DATE:=20180520 -PKG_MIRROR_HASH:=6c541a59f32f57afa54a2216045ddf16a077f8fe2e823fbbe77723eca04ddddb - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/text -# exclude gotext (and message/pipeline) to avoid dependency on golang.org/x/tools -# since there are no other binaries, can skip compilation -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-text-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go text processing support - URL:=https://godoc.org/golang.org/x/text - DEPENDS:=$(GO_ARCH_DEPENDS) - PKGARCH:=all -endef - -define Package/golang-golang-x-text-dev/description -Supplementary Go libraries for text processing, many involving Unicode. -endef - -$(eval $(call GoSrcPackage,golang-golang-x-text-dev)) -$(eval $(call BuildPackage,golang-golang-x-text-dev)) diff --git a/golang/golang-host-build.mk b/golang/golang-host-build.mk index ee4f1ea31..7c7551fd1 100644 --- a/golang/golang-host-build.mk +++ b/golang/golang-host-build.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2020 Jeffery To +# Copyright (C) 2020, 2022 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -107,10 +107,10 @@ GO_HOST_CUSTOM_LDFLAGS= \ GO_HOST_INSTALL_ARGS= \ -v \ -ldflags "all=$(GO_HOST_DEFAULT_LDFLAGS)" \ - $(if $(filter $(GO_HOST_ENABLE_PIE),1),-buildmode pie) \ - $(if $(GO_HOST_GCFLAGS),-gcflags "$(GO_HOST_GCFLAGS)") \ - $(if $(GO_HOST_CUSTOM_LDFLAGS),-ldflags "$(GO_HOST_CUSTOM_LDFLAGS) $(GO_HOST_DEFAULT_LDFLAGS)") \ - $(if $(GO_HOST_TAGS),-tags "$(GO_HOST_TAGS)") + $(if $(GO_HOST_ENABLE_PIE),-buildmode pie) \ + $(if $(strip $(GO_HOST_GCFLAGS)),-gcflags "$(GO_HOST_GCFLAGS)") \ + $(if $(strip $(GO_HOST_CUSTOM_LDFLAGS)),-ldflags "$(GO_HOST_CUSTOM_LDFLAGS) $(GO_HOST_DEFAULT_LDFLAGS)") \ + $(if $(strip $(GO_HOST_TAGS)),-tags "$(GO_HOST_TAGS)") define GoHost/Host/Configure $(GO_GENERAL_BUILD_CONFIG_VARS) \ diff --git a/golang/golang-package.mk b/golang/golang-package.mk index 7144a4524..cc0050536 100644 --- a/golang/golang-package.mk +++ b/golang/golang-package.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2020 Jeffery To +# Copyright (C) 2018-2022 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -32,7 +32,7 @@ include $(GO_INCLUDE_DIR)/golang-values.mk # # * Files in any 'testdata' directory # -# * go.mod and go.sum, in any directory +# * go.mod, go.sum and go.work, in any directory # # e.g. GO_PKG_INSTALL_EXTRA:=example.toml marshal_test.toml # @@ -198,9 +198,11 @@ GO_PKG_TARGET_VARS= \ GOOS="$(GO_OS)" \ GOARCH="$(GO_ARCH)" \ GO386="$(GO_386)" \ + GOAMD64="$(GO_AMD64)" \ GOARM="$(GO_ARM)" \ GOMIPS="$(GO_MIPS)" \ GOMIPS64="$(GO_MIPS64)" \ + GOPPC64="$(GO_PPC64)" \ CGO_ENABLED=1 \ CC="$(TARGET_CC)" \ CXX="$(TARGET_CXX)" \ @@ -213,7 +215,8 @@ GO_PKG_BUILD_VARS= \ GOPATH="$(GO_PKG_BUILD_DIR)" \ GOCACHE="$(GO_BUILD_CACHE_DIR)" \ GOMODCACHE="$(GO_MOD_CACHE_DIR)" \ - GOENV=off + GOENV=off \ + GOTOOLCHAIN=local GO_PKG_VARS= \ $(GO_PKG_TARGET_VARS) \ @@ -236,17 +239,18 @@ GO_PKG_CUSTOM_LDFLAGS= \ GO_PKG_INSTALL_ARGS= \ -v \ + -buildvcs=false \ -trimpath \ -ldflags "all=$(GO_PKG_DEFAULT_LDFLAGS)" \ - $(if $(GO_PKG_DEFAULT_GCFLAGS),-gcflags "all=$(GO_PKG_DEFAULT_GCFLAGS)") \ - $(if $(GO_PKG_DEFAULT_ASMFLAGS),-asmflags "all=$(GO_PKG_DEFAULT_ASMFLAGS)") \ - $(if $(filter $(GO_PKG_ENABLE_PIE),1),-buildmode pie) \ + $(if $(strip $(GO_PKG_DEFAULT_GCFLAGS)),-gcflags "all=$(GO_PKG_DEFAULT_GCFLAGS)") \ + $(if $(strip $(GO_PKG_DEFAULT_ASMFLAGS)),-asmflags "all=$(GO_PKG_DEFAULT_ASMFLAGS)") \ + $(if $(GO_PKG_ENABLE_PIE),-buildmode pie) \ $(if $(filter $(GO_ARCH),arm),-installsuffix "v$(GO_ARM)") \ $(if $(filter $(GO_ARCH),mips mipsle),-installsuffix "$(GO_MIPS)") \ $(if $(filter $(GO_ARCH),mips64 mips64le),-installsuffix "$(GO_MIPS64)") \ - $(if $(GO_PKG_GCFLAGS),-gcflags "$(GO_PKG_GCFLAGS) $(GO_PKG_DEFAULT_GCFLAGS)") \ - $(if $(GO_PKG_CUSTOM_LDFLAGS),-ldflags "$(GO_PKG_CUSTOM_LDFLAGS) $(GO_PKG_DEFAULT_LDFLAGS)") \ - $(if $(GO_PKG_TAGS),-tags "$(GO_PKG_TAGS)") + $(if $(strip $(GO_PKG_GCFLAGS)),-gcflags "$(GO_PKG_GCFLAGS) $(GO_PKG_DEFAULT_GCFLAGS)") \ + $(if $(strip $(GO_PKG_CUSTOM_LDFLAGS)),-ldflags "$(GO_PKG_CUSTOM_LDFLAGS) $(GO_PKG_DEFAULT_LDFLAGS)") \ + $(if $(strip $(GO_PKG_TAGS)),-tags "$(GO_PKG_TAGS)") define GoPackage/Build/Configure $(GO_GENERAL_BUILD_CONFIG_VARS) \ @@ -314,14 +318,3 @@ define GoSrcPackage Package/$(1)/install=$$(call GoPackage/Package/Install/Src,$$(1)) endif endef - - -# Deprecated variables - these will be removed after the next OpenWrt release -GO_PKG_PATH=$(GO_PKG_BUILD_DEPENDS_PATH) -GO_PKG_WORK_DIR=$(PKG_BUILD_DIR)/$(GO_PKG_WORK_DIR_NAME) -GO_PKG_CACHE_DIR=$(GO_BUILD_CACHE_DIR) -GO_PKG_DEFAULT_VARS=$(GO_PKG_VARS) -GoPackage/Environment=$(GO_PKG_VARS) -GoPackage/is_dir_not_empty=$$$$($(FIND) "$(1)" -maxdepth 0 -type d \! -empty 2>/dev/null) -GoPackage/has_binaries=$(call GoPackage/is_dir_not_empty,$(GO_PKG_BUILD_BIN_DIR)) -# End of deprecated variables diff --git a/golang/golang-values.mk b/golang/golang-values.mk index 69126a1ed..7ee00898a 100644 --- a/golang/golang-values.mk +++ b/golang/golang-values.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2018, 2020 Jeffery To +# Copyright (C) 2018-2023 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -13,10 +13,11 @@ endif # Unset environment variables # There are more magic variables to track down, but ain't nobody got time for that -# From https://golang.org/cmd/go/#hdr-Environment_variables +# From https://pkg.go.dev/cmd/go#hdr-Environment_variables # General-purpose environment variables: unexport \ + GO111MODULE \ GCCGO \ GOARCH \ GOBIN \ @@ -28,7 +29,9 @@ unexport \ GOOS \ GOPATH \ GOROOT \ - GOTMPDIR + GOTOOLCHAIN \ + GOTMPDIR \ + GOWORK # Unmodified: # GOINSECURE # GOPRIVATE @@ -36,6 +39,7 @@ unexport \ # GONOPROXY # GOSUMDB # GONOSUMDB +# GOVCS # Environment variables for use with cgo: unexport \ @@ -55,31 +59,37 @@ unexport \ # Architecture-specific environment variables: unexport \ GOARM \ + GOARM64 \ GO386 \ + GOAMD64 \ GOMIPS \ GOMIPS64 \ + GOPPC64 \ + GORISCV64 \ GOWASM +# Environment variables for use with code coverage: +unexport \ + GOCOVERDIR + # Special-purpose environment variables: unexport \ GCCGOTOOLDIR \ + GOEXPERIMENT \ GOROOT_FINAL \ GO_EXTLINK_ENABLED # Unmodified: # GIT_ALLOW_PROTOCOL -# From https://golang.org/cmd/go/#hdr-Module_support -unexport \ - GO111MODULE - -# From https://golang.org/pkg/runtime/#hdr-Environment_Variables +# From https://pkg.go.dev/runtime#hdr-Environment_Variables unexport \ GOGC \ + GOMEMLIMIT \ GOMAXPROCS \ GORACE \ GOTRACEBACK -# From https://golang.org/cmd/cgo/#hdr-Using_cgo_with_the_go_command +# From https://pkg.go.dev/cmd/cgo#hdr-Using_cgo_with_the_go_command unexport \ CC_FOR_TARGET \ CXX_FOR_TARGET @@ -87,13 +97,12 @@ unexport \ # CC_FOR_${GOOS}_${GOARCH} # CXX_FOR_${GOOS}_${GOARCH} -# From https://golang.org/doc/install/source#environment +# From https://go.dev/doc/install/source#environment unexport \ GOHOSTOS \ - GOHOSTARCH \ - GOPPC64 + GOHOSTARCH -# From https://golang.org/src/make.bash +# From https://go.dev/src/make.bash unexport \ GO_GCFLAGS \ GO_LDFLAGS \ @@ -102,20 +111,16 @@ unexport \ GOBUILDTIMELOGFILE \ GOROOT_BOOTSTRAP -# From https://golang.org/doc/go1.9#parallel-compile +# From https://go.dev/doc/go1.9#parallel-compile unexport \ GO19CONCURRENTCOMPILATION -# From https://golang.org/src/cmd/dist/build.go +# From https://go.dev/src/cmd/dist/build.go unexport \ BOOT_GO_GCFLAGS \ BOOT_GO_LDFLAGS -# From https://golang.org/src/cmd/dist/buildruntime.go -unexport \ - GOEXPERIMENT - -# From https://golang.org/src/cmd/dist/buildtool.go +# From https://go.dev/src/cmd/dist/buildtool.go unexport \ GOBOOTSTRAP_TOOLEXEC @@ -148,12 +153,18 @@ else endif ifeq ($(GO_ARCH),386) - # ensure binaries can run on older CPUs - GO_386:=387 + ifeq ($(CONFIG_TARGET_x86_geode)$(CONFIG_TARGET_x86_legacy),y) + GO_386:=softfloat + else + GO_386:=sse2 + endif # -fno-plt: causes "unexpected GOT reloc for non-dynamic symbol" errors GO_CFLAGS_TO_REMOVE:=-fno-plt +else ifeq ($(GO_ARCH),amd64) + GO_AMD64:=v1 + else ifeq ($(GO_ARCH),arm) GO_TARGET_FPU:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))) @@ -185,30 +196,36 @@ else ifneq ($(filter $(GO_ARCH),mips64 mips64le),) GO_MIPS64:=softfloat endif +else ifeq ($(GO_ARCH),ppc64) + GO_PPC64:=power8 + endif # Target Go -GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||x86_64) +GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||riscv64||x86_64) # ASLR/PIE +# From https://go.dev/src/internal/platform/supported.go GO_PIE_SUPPORTED_OS_ARCH:= \ - android_386 android_amd64 android_arm android_arm64 \ - linux_386 linux_amd64 linux_arm linux_arm64 \ + android_386 android_amd64 android_arm android_arm64 \ + linux_386 linux_amd64 linux_arm linux_arm64 \ + windows_386 windows_amd64 windows_arm windows_arm64 \ \ - windows_386 windows_amd64 windows_arm \ + darwin_amd64 darwin_arm64 \ + ios_amd64 ios_arm64 \ \ - darwin_amd64 \ freebsd_amd64 \ \ aix_ppc64 \ \ - linux_ppc64le linux_s390x + linux_loong64 linux_ppc64le linux_riscv64 linux_s390x -go_pie_install_suffix=$(if $(filter $(1),aix_ppc64 windows_386 windows_amd64 windows_arm),,shared) +# From https://go.dev/src/cmd/go/internal/work/init.go +go_pie_install_suffix=$(if $(filter $(1),aix_ppc64 windows_386 windows_amd64 windows_arm windows_arm64),,shared) ifneq ($(filter $(GO_HOST_OS_ARCH),$(GO_PIE_SUPPORTED_OS_ARCH)),) GO_HOST_PIE_SUPPORTED:=1 @@ -236,7 +253,7 @@ endif # General build info -GO_BUILD_CACHE_DIR:=$(or $(call qstrip,$(CONFIG_GOLANG_BUILD_CACHE_DIR)),$(TOPDIR)/.go-build) +GO_BUILD_CACHE_DIR:=$(or $(call qstrip,$(CONFIG_GOLANG_BUILD_CACHE_DIR)),$(TMP_DIR)/go-build) GO_MOD_CACHE_DIR:=$(DL_DIR)/go-mod-cache GO_MOD_ARGS= \ @@ -249,6 +266,6 @@ GO_GENERAL_BUILD_CONFIG_VARS= \ GO_MOD_ARGS="$(GO_MOD_ARGS)" define Go/CacheCleanup - $(GENERAL_BUILD_CONFIG_VARS) \ + $(GO_GENERAL_BUILD_CONFIG_VARS) \ $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh cache_cleanup endef diff --git a/golang/golang/Config.in b/golang/golang/Config.in index 714bf01fd..76fd85c80 100644 --- a/golang/golang/Config.in +++ b/golang/golang/Config.in @@ -17,7 +17,7 @@ config GOLANG_BUILD_CACHE_DIR default "" help Store the Go build cache in this directory. - If not set, uses './.go-build'. + If not set, uses '$(TMP_DIR)/go-build'. config GOLANG_MOD_CACHE_WORLD_READABLE bool "Ensure Go module cache is world-readable" diff --git a/golang/golang/Makefile b/golang/golang/Makefile index 2016dfb8c..593f6ed5a 100644 --- a/golang/golang/Makefile +++ b/golang/golang/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2018, 2020 Jeffery To +# Copyright (C) 2018-2023 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -7,8 +7,8 @@ include $(TOPDIR)/rules.mk -GO_VERSION_MAJOR_MINOR:=1.15 -GO_VERSION_PATCH:=2 +GO_VERSION_MAJOR_MINOR:=1.23 +GO_VERSION_PATCH:=4 PKG_NAME:=golang PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH)) @@ -20,7 +20,7 @@ GO_SOURCE_URLS:=https://dl.google.com/go/ \ PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz PKG_SOURCE_URL:=$(GO_SOURCE_URLS) -PKG_HASH:=28bf9d0bcde251011caae230a4a05d917b172ea203f2a62f2c2f9533589d4b4d +PKG_HASH:=ad345ac421e90814293a9699cca19dd5238251c3f687980bbcae28495b263531 PKG_MAINTAINER:=Jeffery To PKG_LICENSE:=BSD-3-Clause @@ -30,11 +30,10 @@ PKG_CPE_ID:=cpe:/a:golang:go PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_DIR:=$(BUILD_DIR)/go-$(PKG_VERSION) PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 +PKG_BUILD_FLAGS:=no-mips16 PKG_GO_PREFIX:=/usr PKG_GO_VERSION_ID:=$(GO_VERSION_MAJOR_MINOR) -PKG_GO_ROOT:=$(PKG_GO_PREFIX)/lib/go-$(PKG_GO_VERSION_ID) HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/go-$(PKG_VERSION) HOST_BUILD_PARALLEL:=1 @@ -48,12 +47,13 @@ HOST_GO_VALID_OS_ARCH:= \ freebsd_386 freebsd_amd64 freebsd_arm freebsd_arm64 \ linux_386 linux_amd64 linux_arm linux_arm64 \ openbsd_386 openbsd_amd64 openbsd_arm openbsd_arm64 \ + netbsd_386 netbsd_amd64 netbsd_arm netbsd_arm64 \ + windows_386 windows_amd64 windows_arm windows_arm64 \ \ - netbsd_386 netbsd_amd64 netbsd_arm \ plan9_386 plan9_amd64 plan9_arm \ - windows_386 windows_amd64 windows_arm \ \ darwin_amd64 darwin_arm64 \ + ios_amd64 ios_arm64 \ \ dragonfly_amd64 \ illumos_amd64 \ @@ -61,10 +61,16 @@ HOST_GO_VALID_OS_ARCH:= \ \ aix_ppc64 \ js_wasm \ + wasip1_wasm \ + \ + freebsd_riscv64 \ + openbsd_riscv64 \ \ linux_ppc64 linux_ppc64le \ linux_mips linux_mipsle linux_mips64 linux_mips64le \ - linux_riscv64 linux_s390x + linux_loong64 linux_riscv64 linux_s390x \ + \ + openbsd_mips64 BOOTSTRAP_SOURCE:=go1.4-bootstrap-20171003.tar.gz BOOTSTRAP_SOURCE_URL:=$(GO_SOURCE_URLS) @@ -83,6 +89,18 @@ BOOTSTRAP_GO_VALID_OS_ARCH:= \ solaris_amd64 \ windows_386 windows_amd64 +BOOTSTRAP_1_17_SOURCE:=go1.17.13.src.tar.gz +BOOTSTRAP_1_17_SOURCE_URL:=$(GO_SOURCE_URLS) +BOOTSTRAP_1_17_HASH:=a1a48b23afb206f95e7bbaa9b898d965f90826f6f1d1fc0c1d784ada0cd300fd + +BOOTSTRAP_1_17_BUILD_DIR:=$(HOST_BUILD_DIR)/.go_bootstrap_1.17 + +BOOTSTRAP_1_20_SOURCE:=go1.20.6.src.tar.gz +BOOTSTRAP_1_20_SOURCE_URL:=$(GO_SOURCE_URLS) +BOOTSTRAP_1_20_HASH:=62ee5bc6fb55b8bae8f705e0cb8df86d6453626b4ecf93279e2867092e0b7f70 + +BOOTSTRAP_1_20_BUILD_DIR:=$(HOST_BUILD_DIR)/.go_bootstrap_1.20 + include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/package.mk include ../golang-compiler.mk @@ -91,6 +109,8 @@ include ../golang-package.mk PKG_UNPACK:=$(HOST_TAR) -C "$(PKG_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)" HOST_UNPACK:=$(HOST_TAR) -C "$(HOST_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)" BOOTSTRAP_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_SOURCE)" +BOOTSTRAP_1_17_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_1_17_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_1_17_SOURCE)" +BOOTSTRAP_1_20_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_1_20_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_1_20_SOURCE)" # don't strip ELF executables in test data RSTRIP:=: @@ -103,7 +123,7 @@ endif define Package/golang/Default $(call GoPackage/GoSubMenu) TITLE:=Go programming language - URL:=https://golang.org/ + URL:=https://go.dev/ DEPENDS:=$(GO_ARCH_DEPENDS) endef @@ -178,8 +198,7 @@ ifeq ($(BOOTSTRAP_ROOT_DIR),) $(eval $(call Download,golang-bootstrap)) define Bootstrap/Prepare - mkdir -p "$(BOOTSTRAP_BUILD_DIR)" - $(BOOTSTRAP_UNPACK) + mkdir -p "$(BOOTSTRAP_BUILD_DIR)" && $(BOOTSTRAP_UNPACK) ; endef Hooks/HostPrepare/Post+=Bootstrap/Prepare @@ -187,6 +206,39 @@ ifeq ($(BOOTSTRAP_ROOT_DIR),) endif +# Bootstrap 1.17 + +define Download/golang-bootstrap-1.17 + FILE:=$(BOOTSTRAP_1_17_SOURCE) + URL:=$(BOOTSTRAP_1_17_SOURCE_URL) + HASH:=$(BOOTSTRAP_1_17_HASH) +endef +$(eval $(call Download,golang-bootstrap-1.17)) + +define Bootstrap-1.17/Prepare + mkdir -p "$(BOOTSTRAP_1_17_BUILD_DIR)" && $(BOOTSTRAP_1_17_UNPACK) ; +endef +Hooks/HostPrepare/Post+=Bootstrap-1.17/Prepare + +$(eval $(call GoCompiler/AddProfile,Bootstrap-1.17,$(BOOTSTRAP_1_17_BUILD_DIR),,bootstrap-1.17,$(GO_HOST_OS_ARCH))) + +# Bootstrap 1.20 + +define Download/golang-bootstrap-1.20 + FILE:=$(BOOTSTRAP_1_20_SOURCE) + URL:=$(BOOTSTRAP_1_20_SOURCE_URL) + HASH:=$(BOOTSTRAP_1_20_HASH) +endef +$(eval $(call Download,golang-bootstrap-1.20)) + +define Bootstrap-1.20/Prepare + mkdir -p "$(BOOTSTRAP_1_20_BUILD_DIR)" && $(BOOTSTRAP_1_20_UNPACK) ; +endef +Hooks/HostPrepare/Post+=Bootstrap-1.20/Prepare + +$(eval $(call GoCompiler/AddProfile,Bootstrap-1.20,$(BOOTSTRAP_1_20_BUILD_DIR),,bootstrap-1.20,$(GO_HOST_OS_ARCH))) + + # Host ifeq ($(GO_HOST_PIE_SUPPORTED),1) @@ -199,23 +251,36 @@ endif $(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH),$(HOST_GO_INSTALL_SUFFIX))) HOST_GO_VARS= \ + GOHOSTARCH="$(GO_HOST_ARCH)" \ GOCACHE="$(GO_BUILD_CACHE_DIR)" \ GOENV=off \ CC="$(HOSTCC_NOCACHE)" \ CXX="$(HOSTCXX_NOCACHE)" -define Host/Compile +define Host/Configure $(call GoCompiler/Bootstrap/CheckHost,$(BOOTSTRAP_GO_VALID_OS_ARCH)) $(call GoCompiler/Host/CheckHost,$(HOST_GO_VALID_OS_ARCH)) mkdir -p "$(GO_BUILD_CACHE_DIR)" +endef +define Host/Compile $(call GoCompiler/Bootstrap/Make, \ $(HOST_GO_VARS) \ ) - $(call GoCompiler/Host/Make, \ + $(call GoCompiler/Bootstrap-1.17/Make, \ GOROOT_BOOTSTRAP="$(BOOTSTRAP_ROOT_DIR)" \ + $(HOST_GO_VARS) \ + ) + + $(call GoCompiler/Bootstrap-1.20/Make, \ + GOROOT_BOOTSTRAP="$(BOOTSTRAP_1_17_BUILD_DIR)" \ + $(HOST_GO_VARS) \ + ) + + $(call GoCompiler/Host/Make, \ + GOROOT_BOOTSTRAP="$(BOOTSTRAP_1_20_BUILD_DIR)" \ $(if $(HOST_GO_ENABLE_PIE),GO_LDFLAGS="-buildmode pie") \ $(HOST_GO_VARS) \ ) @@ -258,13 +323,17 @@ endif $(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(PKG_GO_PREFIX),$(PKG_GO_VERSION_ID),$(GO_OS_ARCH),$(PKG_GO_INSTALL_SUFFIX))) PKG_GO_ZBOOTSTRAP_MODS:= \ - s/defaultGO386 = `[^`]*`/defaultGO386 = `$(or $(GO_386),387)`/; \ - s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),5)`/; \ + s/defaultGO386 = `[^`]*`/defaultGO386 = `$(or $(GO_386),sse2)`/; \ + s/defaultGOAMD64 = `[^`]*`/defaultGOAMD64 = `$(or $(GO_AMD64),v1)`/; \ + s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),7)`/; \ s/defaultGOMIPS = `[^`]*`/defaultGOMIPS = `$(or $(GO_MIPS),hardfloat)`/; \ s/defaultGOMIPS64 = `[^`]*`/defaultGOMIPS64 = `$(or $(GO_MIPS64),hardfloat)`/; \ - s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `power8`/; + s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `$(or $(GO_PPC64),power8)`/; + +PKG_GO_ZBOOTSTRAP_PATH:=$(PKG_BUILD_DIR)/src/internal/buildcfg/zbootstrap.go PKG_GO_VARS= \ + GOHOSTARCH="$(GO_HOST_ARCH)" \ GOCACHE="$(GO_BUILD_CACHE_DIR)" \ GOENV=off \ GO_GCC_HELPER_PATH="$$$$PATH" \ @@ -285,18 +354,19 @@ PKG_GO_LDFLAGS= \ -extldflags '$(patsubst -z%,-Wl$(comma)-z$(comma)%,$(TARGET_LDFLAGS))' \ $(if $(CONFIG_NO_STRIP)$(CONFIG_DEBUG),,-s -w) -# setting -trimpath is not necessary here because the paths inside the -# compiler binary are relative to GOROOT_FINAL (PKG_GO_ROOT), which is -# static / not dependent on the build environment PKG_GO_INSTALL_ARGS= \ + -buildvcs=false \ + -trimpath \ -ldflags "all=$(PKG_GO_LDFLAGS)" \ $(if $(PKG_GO_GCFLAGS),-gcflags "all=$(PKG_GO_GCFLAGS)") \ $(if $(PKG_GO_ASMFLAGS),-asmflags "all=$(PKG_GO_ASMFLAGS)") \ $(if $(filter $(GO_PKG_ENABLE_PIE),1),-buildmode pie) -define Build/Compile +define Build/Configure mkdir -p "$(GO_BUILD_CACHE_DIR)" +endef +define Build/Compile @echo "Building target Go first stage" $(call GoCompiler/Package/Make, \ @@ -306,8 +376,17 @@ define Build/Compile $(PKG_GO_VARS) \ ) - $(SED) '$(PKG_GO_ZBOOTSTRAP_MODS)' \ - "$(PKG_BUILD_DIR)/src/cmd/internal/objabi/zbootstrap.go" + $(SED) '$(PKG_GO_ZBOOTSTRAP_MODS)' "$(PKG_GO_ZBOOTSTRAP_PATH)" + + ( \ + if echo 'int main() { return 0; }' | $(TARGET_CC) -o $(PKG_BUILD_DIR)/test-ldso -x c - > /dev/null 2>&1; then \ + LDSO=$$$$( \ + readelf -l $(PKG_BUILD_DIR)/test-ldso | \ + sed -n -e 's/^.*interpreter: \(.*\)[]]/\1/p' \ + ) ; \ + fi ; \ + $(SED) "s,defaultGO_LDSO = \`[^\`]*\`,defaultGO_LDSO = \`$$$$LDSO\`," "$(PKG_GO_ZBOOTSTRAP_PATH)" ; \ + ) @echo "Building target Go second stage" @@ -315,7 +394,6 @@ define Build/Compile cd "$(PKG_BUILD_DIR)/bin" ; \ export $(GO_PKG_TARGET_VARS) ; \ $(CP) go go-host ; \ - GOROOT_FINAL="$(PKG_GO_ROOT)" \ GO_GCC_HELPER_CC="$(TARGET_CC)" \ GO_GCC_HELPER_CXX="$(TARGET_CXX)" \ $(PKG_GO_VARS) \ diff --git a/golang/golang/files/go-gcc-helper b/golang/golang/files/go-gcc-helper index b396e302c..b21457b55 100644 --- a/golang/golang/files/go-gcc-helper +++ b/golang/golang/files/go-gcc-helper @@ -1,4 +1,10 @@ #!/bin/sh +# +# Copyright (C) 2018, 2020 Jeffery To +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# me=go-gcc-helper name="${0##*/}" diff --git a/golang/golang/test.sh b/golang/golang/test.sh new file mode 100644 index 000000000..114b427ef --- /dev/null +++ b/golang/golang/test.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +[ "$1" = golang ] || exit 0 + +go version | grep -F " go$PKG_VERSION " diff --git a/grpcurl/Makefile b/grpcurl/Makefile new file mode 100644 index 000000000..8bec5ccf4 --- /dev/null +++ b/grpcurl/Makefile @@ -0,0 +1,60 @@ +# +# Copyright (C) 2022 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=grpcurl +PKG_VERSION:=1.8.6 +PKG_RELEASE:=1 + +PKG_SOURCE:=v$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/fullstorydev/grpcurl/archive/refs/tags/ +PKG_HASH:=18b457f644baabeef0de350596dd8d23563586ee94a3ed3cb290063e097ab934 + +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Yannick Chabanois + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +GO_PKG:=github.com/fullstorydev/grpcurl +GO_PKG_BUILD_PKG:=github.com/fullstorydev/grpcurl/cmd/grpcurl +GO_PKG_LDFLAGS_X:= \ + $(GO_PKG)/constant.Version=$(PKG_VERSION) \ + $(GO_PKG)/constant.Commit=v$(PKG_VERSION) +GO_PKG_LDFLAGS:=-s -w +GO_PKG_TAGS:=master + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk + +define Package/grpcurl + TITLE:=grpcurl is a command-line tool that lets you interact with gRPC servers + URL:=https://github.com/fullstorydev/grpcurl + SECTION:=net + CATEGORY:=Network + DEPENDS:=$(GO_ARCH_DEPENDS) +protobuf +endef + +define Package/grpcurl/description + grpcurl is a command-line tool that lets you interact with gRPC servers. It's basically curl for gRPC servers. + + The main purpose for this tool is to invoke RPC methods on a gRPC server from the command-line. gRPC servers use a binary encoding on the wire (protocol buffers, or "protobufs" for short). So they are basically impossible to interact with using regular curl (and older versions of curl that do not support HTTP/2 are of course non-starters). This program accepts messages using JSON encoding, which is much more friendly for both humans and scripts. +endef + +define Package/v2ray-core/install + $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) + + $(INSTALL_DIR) $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/grpcurl $(1)/usr/bin +endef + +$(eval $(call GoBinPackage,grpcurl)) +$(eval $(call BuildPackage,grpcurl)) diff --git a/https-dns-proxy/Makefile b/https-dns-proxy/Makefile deleted file mode 100644 index 0fefc7ca5..000000000 --- a/https-dns-proxy/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=https-dns-proxy -PKG_VERSION:=2019-12-03 -PKG_RELEASE=5 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy -PKG_SOURCE_DATE:=2019-12-03 -PKG_SOURCE_VERSION:=2adeafb67cbe8d67148219c48334856ae4f3bd75 -PKG_MIRROR_HASH:=58088baa092cd9634652d65f9b5650db88d2e102cb370710654db7b15f2f0e42 -PKG_MAINTAINER:=Stan Grishin -PKG_LICENSE:=MIT -PKG_LICENSE_FILES:=LICENSE - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/cmake.mk - -CMAKE_OPTIONS += -DCLANG_TIDY_EXE= - -define Package/https-dns-proxy - SECTION:=net - CATEGORY:=Network - TITLE:=DNS Over HTTPS Proxy - DEPENDS:=+libcares +libcurl +libev +ca-bundle - CONFLICTS:=https_dns_proxy -endef - -define Package/https-dns-proxy/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d ${1}/etc/config - $(INSTALL_BIN) $(PKG_BUILD_DIR)/https_dns_proxy $(1)/usr/sbin/https-dns-proxy - $(INSTALL_BIN) ./files/https-dns-proxy.init $(1)/etc/init.d/https-dns-proxy - $(INSTALL_CONF) ./files/https-dns-proxy.config $(1)/etc/config/https-dns-proxy -endef - -$(eval $(call BuildPackage,https-dns-proxy)) diff --git a/https-dns-proxy/files/README.md b/https-dns-proxy/files/README.md deleted file mode 100644 index 87e548462..000000000 --- a/https-dns-proxy/files/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# DNS Over HTTPS Proxy (https-dns-proxy) - -A lean RFC8484-compatible (no JSON API support) DNS-over-HTTPS (DoH) proxy service which supports DoH servers ran by AdGuard, CleanBrowsing, Cloudflare, Google, ODVR (nic.cz) and Quad9. Please see the [README](https://github.com/stangri/openwrt_packages/blob/master/https-dns-proxy/files/README.md) for further information. Based on [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy). - -## Features - -- [RFC8484](https://tools.ietf.org/html/rfc8484)-compatible DoH Proxy. -- Compact size. -- Web UI (```luci-app-https-dns-proxy```) available. -- (By default) automatically updates DNSMASQ settings to use DoH proxy when it's started and reverts to old DNSMASQ resolvers when DoH proxy is stopped. - -## Screenshots (luci-app-https-dns-proxy) - -![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/https-dns-proxy/screenshot01.png "https-dns-proxy screenshot") - -## Requirements - -This proxy requires the following packages to be installed on your router: ```libc```, ```libcares```, ```libcurl```, ```libev```, ```ca-bundle```. They will be automatically installed when you're installing ```https-dns-proxy```. - -## Unmet Dependencies - -If you are running a development (trunk/snapshot) build of OpenWrt/LEDE Project on your router and your build is outdated (meaning that packages of the same revision/commit hash are no longer available and when you try to satisfy the [requirements](#requirements) you get errors), please flash either current LEDE release image or current development/snapshot image. - -## How To Install - -Install ```https-dns-proxy``` and ```luci-app-https-dns-proxy``` packages from Web UI or run the following in the command line: - -```sh -opkg update; opkg install https-dns-proxy luci-app-https-dns-proxy; -``` - -## Default Settings - -Default configuration has service enabled and starts the service with Google and Cloudflare DoH servers. In most configurations, you will keep the default ```DNSMASQ``` service installed to handle requests from devices in your local network and point ```DNSMASQ``` to use ```https-dns-proxy``` for name resolution. - -By default, the service will intelligently override existing ```DNSMASQ``` servers settings on start to use the DoH servers and restores original ```DNSMASQ``` servers on stop. See the [Configuration Settings](#configuration-settings) section below for more information and how to disable this behavior. - -## Configuration Settings - -Configuration contains the (named) "main" config section where you can configure which ```DNSMASQ``` settings the service will automatically affect and the typed (unnamed) https-dns-proxy instance settings. The original config file is included below: - -```text -config main 'config' - option update_dnsmasq_config '*' - -config https-dns-proxy - option bootstrap_dns '8.8.8.8,8.8.4.4' - option resolver_url 'https://dns.google/dns-query' - option listen_addr '127.0.0.1' - option listen_port '5053' - option user 'nobody' - option group 'nogroup' - -config https-dns-proxy - option bootstrap_dns '1.1.1.1,1.0.0.1' - option resolver_url 'https://cloudflare-dns.com/dns-query' - option listen_addr '127.0.0.1' - option listen_port '5054' - option user 'nobody' - option group 'nogroup' -``` - -The ```update_dnsmasq_config``` option can be set to dash (set to ```'-'``` to not change ```DNSMASQ``` server settings on start/stop), can be set to ```'*'``` to affect all ```DNSMASQ``` instance server settings or have a space-separated list of ```DNSMASQ``` instances to affect (like ```'0 4 5'```). If this option is omitted, the default setting is ```'*'```. - -Starting with ```https-dns-proxy``` version ```2019-12-03-3``` and higher, when the service is set to update the DNSMASQ servers setting on start/stop, it does not override entries which contain either ```#``` or ```/```, so the entries like listed below will be kept in use: - -```test - list server '/onion/127.0.0.1#65453' - list server '/openwrt.org/8.8.8.8' - list server '/pool.ntp.org/8.8.8.8' - list server '127.0.0.1#15353' - list server '127.0.0.1#55353' - list server '127.0.0.1#65353' -``` - -The https-dns-proxy instance settings are: - -|Parameter|Type|Default|Description| -| --- | --- | --- | --- | -|bootstrap_dns|IP Address||The non-encrypted DNS servers to be used to resolve the DoH server name on start.| -|edns_subnet|Subnet||EDNS Subnet address can be supplied to supported DoH servers to provide local resolution results.| -|listen_addr|IP Address|127.0.0.1|The local IP address to listen to requests.| -|listen_port|port|5053 and up|If this setting is omitted, the service will start the first https-dns-proxy instance on port 5053, second on 5054 and so on.| -|logfile|Full filepath||Full filepath to the file to log the instance events to.| -|resolver_url|URL||The https URL to the RFC8484-compatible resolver.| -|proxy_server|URL||Local proxy server to use when accessing resolvers.| -|user|String|nobody|Local user to run instance under.| -|group|String|nogroup|Local group to run instance under.| -|use_http1|Boolean|0|If set to 1, use HTTP/1 on installations with broken/outdated ```curl``` package. Included for posterity reasons, you will most likely not ever need it on OpenWrt.| -|verbosity|Integer|0|logging verbosity level. fatal = 0, error = 1, warning = 2, info = 3, debug = 4| -|use_ipv6_resolvers_only|Boolean|0|If set to 1, Forces IPv6 DNS resolvers instead of IPv4| - -## Thanks - -This OpenWrt package wouldn't have been possible without [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy) and his active participation in the OpenWrt package itself. Special thanks to [@jow-](https://github.com/jow-) for general package/luci guidance. diff --git a/https-dns-proxy/files/https-dns-proxy.config b/https-dns-proxy/files/https-dns-proxy.config deleted file mode 100644 index 3c5eecf4d..000000000 --- a/https-dns-proxy/files/https-dns-proxy.config +++ /dev/null @@ -1,18 +0,0 @@ -config main 'config' - option update_dnsmasq_config '*' - -config https-dns-proxy - option bootstrap_dns '8.8.8.8,8.8.4.4' - option resolver_url 'https://dns.google/dns-query' - option listen_addr '127.0.0.1' - option listen_port '5053' - option user 'nobody' - option group 'nogroup' - -config https-dns-proxy - option bootstrap_dns '1.1.1.1,1.0.0.1' - option resolver_url 'https://cloudflare-dns.com/dns-query' - option listen_addr '127.0.0.1' - option listen_port '5054' - option user 'nobody' - option group 'nogroup' diff --git a/https-dns-proxy/files/https-dns-proxy.init b/https-dns-proxy/files/https-dns-proxy.init deleted file mode 100755 index 5ca0bd133..000000000 --- a/https-dns-proxy/files/https-dns-proxy.init +++ /dev/null @@ -1,188 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright 2019 Stan Grishin (stangri@melmac.net) -# shellcheck disable=SC2039 - -export START=80 -export USE_PROCD=1 - -dnsmasqConfig='' - -PROG=/usr/sbin/https-dns-proxy - -xappend() { param="$param $1"; } - -append_bool() { - local section="$1" - local option="$2" - local value="$3" - local default="$4" - local _loctmp - [ -z "$default" ] && default="0" - config_get_bool _loctmp "$section" "$option" "$default" - [ "$_loctmp" != "0" ] && xappend "$value" -} - -append_parm() { - local section="$1" - local option="$2" - local switch="$3" - local default="$4" - local _loctmp - config_get _loctmp "$section" "$option" "$default" - [ -z "$_loctmp" ] && return 0 - xappend "$switch $_loctmp" -} - -start_instance() { - local cfg="$1" param listen_addr listen_port i - - append_parm "$cfg" 'listen_addr' '-a' '127.0.0.1' - append_parm "$cfg" 'listen_port' '-p' "$p" - append_parm "$cfg" 'bootstrap_dns' '-b' - append_parm "$cfg" 'resolver_url' '-r' - append_parm "$cfg" 'user' '-u' 'nobody' - append_parm "$cfg" 'group' '-g' 'nogroup' - append_parm "$cfg" 'edns_subnet' '-e' - append_parm "$cfg" 'proxy_server' '-t' - append_parm "$cfg" 'logfile' '-l' - append_bool "$cfg" 'use_http1' '-x' - config_get_bool ipv6_resolvers_only "$cfg" 'use_ipv6_resolvers_only' '0' - config_get verbosity "$cfg" 'verbosity' "0" - -# shellcheck disable=SC2086,SC2154 - for i in $(seq 1 $verbosity); do - xappend "-v" - done -# shellcheck disable=SC2154 - if [ "$ipv6_resolvers_only" = 0 ]; then - xappend "-4" - fi - - procd_open_instance -# shellcheck disable=SC2086 - procd_set_param command ${PROG} ${param} - procd_set_param stderr 1 - procd_set_param stdout 1 - procd_set_param respawn - procd_close_instance - - config_get listen_addr "$cfg" 'listen_addr' '127.0.0.1' - config_get listen_port "$cfg" 'listen_port' "$p" - - if [ "$dnsmasqConfig" = "*" ]; then - config_load 'dhcp' - config_foreach dnsmasq_add_doh_server 'dnsmasq' "${listen_addr}" "${listen_port}" - elif [ -n "$dnsmasqConfig" ]; then - for i in $dnsmasqConfig; do - dnsmasq_add_doh_server "@dnsmasq[${i}]" "${listen_addr}" "${listen_port}" - done - fi - p="$((p+1))" -} - -service_triggers() { - procd_add_reload_trigger 'https-dns-proxy' -} - -start_service() { - local p=5053 - config_load 'https-dns-proxy' - config_get dnsmasqConfig 'config' 'update_dnsmasq_config' '*' - dhcp_backup 'create' - config_load 'https-dns-proxy' - config_foreach start_instance 'https-dns-proxy' - if [ "$p" != "5053" ] && [ "$dnsmasqConfig" = "*" ]; then - uci -q del_list "dhcp.@dnsmasq[0].server=127.0.0.1#5353" - fi - if [ -n "$(uci -q changes dhcp)" ]; then - uci -q commit dhcp - [ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null 2>&1 - fi -} - -stop_service() { - config_load 'https-dns-proxy' - config_get dnsmasqConfig 'config' 'update_dnsmasq_config' '*' - dhcp_backup 'restore' - if [ -n "$(uci -q changes dhcp)" ]; then - uci -q commit dhcp - [ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq restart >/dev/null 2>&1 - fi -} - -service_triggers() { - procd_add_reload_trigger 'https-dns-proxy' -} - -dnsmasq_add_doh_server() { - local cfg="$1" address="$2" port="$3" - case $address in - 0.0.0.0|::ffff:0.0.0.0) address='127.0.0.1';; - ::) address='::1';; - esac - uci -q del_list "dhcp.${cfg}.server=${address}#${port}" - uci -q add_list "dhcp.${cfg}.server=${address}#${port}" -} - -dnsmasq_create_server_backup() { - local cfg="$1" - local i - uci -q get "dhcp.${cfg}" >/dev/null || return 0 - if ! uci -q get "dhcp.${cfg}.doh_backup_noresolv" >/dev/null; then - if [ -z "$(uci -q get "dhcp.${cfg}.noresolv")" ]; then - uci -q set "dhcp.${cfg}.noresolv=1" - uci -q set "dhcp.${cfg}.doh_backup_noresolv=-1" - elif [ "$(uci -q get "dhcp.${cfg}.noresolv")" != "1" ]; then - uci -q set "dhcp.${cfg}.noresolv=1" - uci -q set "dhcp.${cfg}.doh_backup_noresolv=0" - fi - fi - if ! uci -q get "dhcp.${cfg}.doh_backup_server" >/dev/null; then - for i in $(uci -q get "dhcp.${cfg}.server"); do - uci -q add_list "dhcp.${cfg}.doh_backup_server=$i" - if [ "$i" = "${i//127.0.0.1}" ] && [ "$i" = "$(echo "$i" | tr -d /)" ]; then - uci -q del_list "dhcp.${cfg}.server=$i" - fi - done - fi -} - -dnsmasq_restore_server_backup() { - local cfg="$1" - local i - uci -q get "dhcp.${cfg}" >/dev/null || return 0 - if uci -q get "dhcp.${cfg}.doh_backup_noresolv" >/dev/null; then - if [ "$(uci -q get "dhcp.${cfg}.doh_backup_noresolv")" = "0" ]; then - uci -q set "dhcp.${cfg}.noresolv=0" - else - uci -q del "dhcp.${cfg}.noresolv" - fi - uci -q del "dhcp.${cfg}.doh_backup_noresolv" - fi - if uci -q get "dhcp.${cfg}.doh_backup_server" >/dev/null; then - uci -q del "dhcp.${cfg}.server" - for i in $(uci -q get "dhcp.${cfg}.doh_backup_server"); do - uci -q add_list "dhcp.${cfg}.server=$i" - done - uci -q del "dhcp.${cfg}.doh_backup_server" - fi -} - -dhcp_backup() { - local i - config_load 'dhcp' - case "$1" in - create) - if [ "$dnsmasqConfig" = "*" ]; then - config_foreach dnsmasq_create_server_backup 'dnsmasq' - elif [ -n "$dnsmasqConfig" ]; then - for i in $dnsmasqConfig; do - dnsmasq_create_server_backup "@dnsmasq[${i}]" - done - fi - ;; - restore) - config_foreach dnsmasq_restore_server_backup 'dnsmasq' - ;; - esac -} diff --git a/ipcalc/Makefile b/ipcalc/Makefile index f2d752d59..3d95869ff 100644 --- a/ipcalc/Makefile +++ b/ipcalc/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -10,11 +10,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ipcalc PKG_RELEASE:=1 -PKG_SOURCE_URL:=https://github.com/nmav/ipcalc.git +PKG_SOURCE_URL:=https://gitlab.com/ipcalc/ipcalc.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=e9f88461f2585575d12fc95f5eeb9996b863f5af +PKG_SOURCE_VERSION:=d8a2fe29a89f0f9f0d44a7b15e260c74f0e8388b PKG_MAINTAINER:=Ycarus (Yannick Chabanois) PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILE:=COPYING include $(INCLUDE_DIR)/package.mk diff --git a/iperf3/Makefile b/iperf3/Makefile index b1f7dc21d..a5fe60450 100644 --- a/iperf3/Makefile +++ b/iperf3/Makefile @@ -1,6 +1,5 @@ # # Copyright (C) 2007-2010 OpenWrt.org -# Copyright (C) 2019 Ycarus (Yannick Chabanois) # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,15 +8,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iperf -PKG_SOURCE_VERSION:=02a5f4755878b319f0db5ccd490daf61e6d76043 -PKG_VERSION:=3.7-$(PKG_SOURCE_VERSION) -PKG_RELEASE:=2 +PKG_VERSION:=3.18 +PKG_RELEASE:=1 -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/esnet/iperf.git +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://downloads.es.net/pub/iperf +PKG_HASH:=c0618175514331e766522500e20c94bfb293b4424eb27d7207fb427b88d20bab -PKG_MAINTAINER:=Yannick Chabanois +PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=BSD-3-Clause +PKG_CPE_ID:=cpe:/a:es:iperf3 PKG_BUILD_PARALLEL:=1 PKG_INSTALL:=1 @@ -38,24 +38,36 @@ endef define Package/iperf3 $(call Package/iperf3/default) VARIANT:=nossl + DEPENDS:=+libiperf3 endef define Package/iperf3-ssl $(call Package/iperf3/default) TITLE+= with iperf_auth support VARIANT:=ssl - DEPENDS:= +libopenssl + DEPENDS:=+libopenssl +libatomic + CONFLICTS:=iperf3 +endef + +define Package/libiperf3 + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Internet Protocol bandwidth measuring library + URL:=https://github.com/esnet/iperf + DEPENDS+=+libatomic endef TARGET_CFLAGS += -D_GNU_SOURCE -CONFIGURE_ARGS += --disable-shared +TARGET_LDFLAGS += -latomic ifeq ($(BUILD_VARIANT),ssl) - CONFIGURE_ARGS += --with-openssl="$(STAGING_DIR)/usr" + CONFIGURE_ARGS += --with-openssl="$(STAGING_DIR)/usr" --disable-shared else CONFIGURE_ARGS += --without-openssl endif +CONFIGURE_ARGS += --without-sctp + MAKE_FLAGS += noinst_PROGRAMS= define Package/iperf3/description @@ -64,6 +76,17 @@ define Package/iperf3/description characteristics. endef +define Package/libiperf3/description + Libiperf is a library providing an API for iperf3 functionality. +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libiperf.* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ +endef + # autoreconf fails if the README file isn't present define Build/Prepare $(call Build/Prepare/Default) @@ -80,5 +103,11 @@ define Package/iperf3-ssl/install $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/iperf3 $(1)/usr/bin/ endef +define Package/libiperf3/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libiperf.so.* $(1)/usr/lib +endef + $(eval $(call BuildPackage,iperf3)) $(eval $(call BuildPackage,iperf3-ssl)) +$(eval $(call BuildPackage,libiperf3)) diff --git a/iperf3/patches/010-big-endian.patch b/iperf3/patches/010-big-endian.patch new file mode 100644 index 000000000..f57ef51a4 --- /dev/null +++ b/iperf3/patches/010-big-endian.patch @@ -0,0 +1,21 @@ +From fe09305eb6f907e4eb637b8edd0c8a986187d1dd Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Sat, 8 Jun 2024 15:23:51 -0700 +Subject: [PATCH] fix crash under big endian musl + +iperf_printf is using an int format here but an int64_t variable. The format only needs the first 3 digits. Cast to int to fix it. +--- + src/iperf_api.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/iperf_api.c ++++ b/src/iperf_api.c +@@ -4137,7 +4137,7 @@ iperf_print_results(struct iperf_test *t + iperf_printf(test, report_sender_not_available_summary_format, "SUM"); + } + else { +- iperf_printf(test, report_sum_bw_retrans_format, mbuf, start_time, sender_time, ubuf, nbuf, total_retransmits, report_sender); ++ iperf_printf(test, report_sum_bw_retrans_format, mbuf, start_time, sender_time, ubuf, nbuf, (int)total_retransmits, report_sender); + } + } else { + /* Summary sum, TCP without retransmits. */ diff --git a/iperf3/patches/add-MPTCP-support.patch b/iperf3/patches/add-MPTCP-support.patch new file mode 100644 index 000000000..fce1a388f --- /dev/null +++ b/iperf3/patches/add-MPTCP-support.patch @@ -0,0 +1,266 @@ +From cf75cf46785871330717a6d2c889abeb7bbd7bfd Mon Sep 17 00:00:00 2001 +From: Geliang Tang +Date: Wed, 6 Mar 2024 11:23:33 +0800 +Subject: [PATCH] add MPTCPv1 support + +The Multipath TCP (MPTCP) protocol (v1 / RFC 8684) has been added in +the upstream Linux kernel since v5.6. + +MPTCP is strongly tied to TCP, and the kernel APIs are almost the same. +The only required dependency is the 'IPPROTO_MPTCP' protocol number +definition, which should be provided by the netinet/in.h header if it +is recent enough. + +This patch adds a new flag '-m' or '--mptcp' to support MPTCPv1. It can +be used like this: + + > iperf3 -m -s + > iperf3 -m -c 127.0.0.1 + +If IPPROTO_MPTCP is not supported by the kernel being tested, it is +normal to fail because the feature is not available and the user +explicitly asked to use MPTCP. + +Closes: https://github.com/esnet/iperf/pull/1659 +Co-developed-by: Paolo Abeni +Signed-off-by: Geliang Tang +--- + configure.ac | 12 ++++++++++++ + src/iperf.h | 1 + + src/iperf3.1 | 4 ++++ + src/iperf_api.c | 19 ++++++++++++++++++- + src/iperf_locale.c | 3 +++ + src/iperf_tcp.c | 18 +++++++++++++++--- + src/net.c | 10 +++++----- + src/net.h | 2 +- + 8 files changed, 59 insertions(+), 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 66c1e97a5..22c2a95cf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -337,6 +337,18 @@ if test "x$iperf3_cv_header_tcp_info_snd_wnd" = "xyes"; then + AC_DEFINE([HAVE_TCP_INFO_SND_WND], [1], [Have tcpi_snd_wnd field in tcp_info.]) + fi + ++# Check for IPPROTO_MPTCP (Linux) ++AC_CACHE_CHECK([MPTCP protocol], ++[iperf3_cv_header_ipproto_mptcp], ++AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM([[#include ]], ++ [[int foo = IPPROTO_MPTCP;]])], ++ iperf3_cv_header_ipproto_mptcp=yes, ++ iperf3_cv_header_ipproto_mptcp=no)) ++if test "x$iperf3_cv_header_ipproto_mptcp" = "xyes"; then ++ AC_DEFINE([HAVE_IPPROTO_MPTCP], [1], [Have MPTCP protocol.]) ++fi ++ + # Check if we need -lrt for clock_gettime + AC_SEARCH_LIBS(clock_gettime, [rt posix4]) + # Check for clock_gettime support +diff --git a/src/iperf.h b/src/iperf.h +index 202d3016f..4043031b3 100644 +--- a/src/iperf.h ++++ b/src/iperf.h +@@ -353,6 +353,7 @@ struct iperf_test + int repeating_payload; /* --repeating-payload */ + int timestamps; /* --timestamps */ + char *timestamp_format; ++ int mptcp; /* -m, --mptcp */ + + char *json_output_string; /* rendered JSON output if json_output is set */ + /* Select related parameters */ +diff --git a/src/iperf3.1 b/src/iperf3.1 +index f8eff48d2..9e425cabc 100644 +--- a/src/iperf3.1 ++++ b/src/iperf3.1 +@@ -202,6 +202,10 @@ iperf-3.17, OAEP padding is used, however this is a breaking change + that is not compatible with older iperf3 versions. Use this option to + preserve the less secure, but more compatible, behavior. + .TP ++.BR -m ", " --mptcp " " ++use mptcp variant for the current protocol. This only applies to ++TCP and enables MPTCP usage. ++.TP + .BR -d ", " --debug " " + emit debugging output. + Primarily (perhaps exclusively) of use to developers. +diff --git a/src/iperf_api.c b/src/iperf_api.c +index fa06dc830..419b48657 100644 +--- a/src/iperf_api.c ++++ b/src/iperf_api.c +@@ -1149,6 +1149,9 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + {"idle-timeout", required_argument, NULL, OPT_IDLE_TIMEOUT}, + {"rcv-timeout", required_argument, NULL, OPT_RCV_TIMEOUT}, + {"snd-timeout", required_argument, NULL, OPT_SND_TIMEOUT}, ++#if defined(HAVE_IPPROTO_MPTCP) ++ {"mptcp", no_argument, NULL, 'm'}, ++#endif + {"debug", optional_argument, NULL, 'd'}, + {"help", no_argument, NULL, 'h'}, + {NULL, 0, NULL, 0} +@@ -1174,7 +1177,7 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + FILE *ptr_file; + #endif /* HAVE_SSL */ + +- while ((flag = getopt_long(argc, argv, "p:f:i:D1VJvsc:ub:t:n:k:l:P:Rw:B:M:N46S:L:ZO:F:A:T:C:dI:hX:", longopts, NULL)) != -1) { ++ while ((flag = getopt_long(argc, argv, "p:f:i:D1VJvsc:ub:t:n:k:l:P:Rw:B:M:N46S:L:ZO:F:A:T:C:dI:mhX:", longopts, NULL)) != -1) { + switch (flag) { + case 'p': + portno = atoi(optarg); +@@ -1647,6 +1650,12 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + test->settings->connect_timeout = unit_atoi(optarg); + client_flag = 1; + break; ++#if defined(HAVE_IPPROTO_MPTCP) ++ case 'm': ++ set_protocol(test, Ptcp); ++ test->mptcp = 1; ++ break; ++#endif + case 'h': + usage_long(stdout); + exit(0); +@@ -2259,6 +2268,10 @@ send_parameters(struct iperf_test *test) + cJSON_AddTrueToObject(j, "reverse"); + if (test->bidirectional) + cJSON_AddTrueToObject(j, "bidirectional"); ++#if defined(HAVE_IPPROTO_MPTCP) ++ if (test->mptcp) ++ cJSON_AddTrueToObject(j, "mptcp"); ++#endif + if (test->settings->socket_bufsize) + cJSON_AddNumberToObject(j, "window", test->settings->socket_bufsize); + if (test->settings->blksize) +@@ -2375,6 +2388,10 @@ get_parameters(struct iperf_test *test) + iperf_set_test_reverse(test, 1); + if ((j_p = iperf_cJSON_GetObjectItemType(j, "bidirectional", cJSON_True)) != NULL) + iperf_set_test_bidirectional(test, 1); ++#if defined(HAVE_IPPROTO_MPTCP) ++ if ((j_p = iperf_cJSON_GetObjectItemType(j, "mptcp", cJSON_True)) != NULL) ++ test->mptcp = 1; ++#endif + if ((j_p = iperf_cJSON_GetObjectItemType(j, "window", cJSON_Number)) != NULL) + test->settings->socket_bufsize = j_p->valueint; + if ((j_p = iperf_cJSON_GetObjectItemType(j, "len", cJSON_Number)) != NULL) +diff --git a/src/iperf_locale.c b/src/iperf_locale.c +index 32883da84..f1d89e298 100644 +--- a/src/iperf_locale.c ++++ b/src/iperf_locale.c +@@ -128,6 +128,9 @@ const char usage_longstr[] = "Usage: iperf3 [-s|-c host] [options]\n" + " --snd-timeout # timeout for unacknowledged TCP data\n" + " (in ms, default is system settings)\n" + #endif /* HAVE_TCP_USER_TIMEOUT */ ++#if defined(HAVE_IPPROTO_MPTCP) ++ " -m, --mptcp use MPTCP rather than plain TCP\n" ++#endif + " -d, --debug[=#] emit debugging output\n" + " (optional optional \"=\" and debug level: 1-4. Default is 4 - all messages)\n" + " -v, --version show version information and quit\n" +diff --git a/src/iperf_tcp.c b/src/iperf_tcp.c +index 481c09dc8..2c10d7df5 100644 +--- a/src/iperf_tcp.c ++++ b/src/iperf_tcp.c +@@ -184,9 +184,10 @@ iperf_tcp_listen(struct iperf_test *test) + * + * It's not clear whether this is a requirement or a convenience. + */ +- if (test->no_delay || test->settings->mss || test->settings->socket_bufsize) { ++ if (test->no_delay || test->mptcp || test->settings->mss || test->settings->socket_bufsize) { + struct addrinfo hints, *res; + char portstr[6]; ++ int proto = 0; + + FD_CLR(s, &test->read_set); + close(s); +@@ -212,7 +213,12 @@ iperf_tcp_listen(struct iperf_test *test) + return -1; + } + +- if ((s = socket(res->ai_family, SOCK_STREAM, 0)) < 0) { ++#if defined(HAVE_IPPROTO_MPTCP) ++ if (test->mptcp) ++ proto = IPPROTO_MPTCP; ++#endif ++ ++ if ((s = socket(res->ai_family, SOCK_STREAM, proto)) < 0) { + freeaddrinfo(res); + i_errno = IESTREAMLISTEN; + return -1; +@@ -380,8 +386,14 @@ iperf_tcp_connect(struct iperf_test *test) + socklen_t optlen; + int saved_errno; + int rcvbuf_actual, sndbuf_actual; ++ int proto = 0; ++ ++#if defined(HAVE_IPPROTO_MPTCP) ++ if (test->mptcp) ++ proto = IPPROTO_MPTCP; ++#endif + +- s = create_socket(test->settings->domain, SOCK_STREAM, test->bind_address, test->bind_dev, test->bind_port, test->server_hostname, test->server_port, &server_res); ++ s = create_socket(test->settings->domain, SOCK_STREAM, proto, test->bind_address, test->bind_dev, test->bind_port, test->server_hostname, test->server_port, &server_res); + if (s < 0) { + i_errno = IESTREAMCONNECT; + return -1; +diff --git a/src/net.c b/src/net.c +index b693ea7fb..febf20885 100644 +--- a/src/net.c ++++ b/src/net.c +@@ -124,7 +124,7 @@ timeout_connect(int s, const struct sockaddr *name, socklen_t namelen, + + /* create a socket */ + int +-create_socket(int domain, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out) ++create_socket(int domain, int type, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out) + { + struct addrinfo hints, *local_res = NULL, *server_res = NULL; + int s, saved_errno; +@@ -133,14 +133,14 @@ create_socket(int domain, int proto, const char *local, const char *bind_dev, in + if (local) { + memset(&hints, 0, sizeof(hints)); + hints.ai_family = domain; +- hints.ai_socktype = proto; ++ hints.ai_socktype = type; + if ((gerror = getaddrinfo(local, NULL, &hints, &local_res)) != 0) + return -1; + } + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = domain; +- hints.ai_socktype = proto; ++ hints.ai_socktype = type; + snprintf(portstr, sizeof(portstr), "%d", port); + if ((gerror = getaddrinfo(server, portstr, &hints, &server_res)) != 0) { + if (local) +@@ -148,7 +148,7 @@ create_socket(int domain, int proto, const char *local, const char *bind_dev, in + return -1; + } + +- s = socket(server_res->ai_family, proto, 0); ++ s = socket(server_res->ai_family, type, proto); + if (s < 0) { + if (local) + freeaddrinfo(local_res); +@@ -238,7 +238,7 @@ netdial(int domain, int proto, const char *local, const char *bind_dev, int loca + struct addrinfo *server_res = NULL; + int s, saved_errno; + +- s = create_socket(domain, proto, local, bind_dev, local_port, server, port, &server_res); ++ s = create_socket(domain, proto, 0, local, bind_dev, local_port, server, port, &server_res); + if (s < 0) { + return -1; + } +diff --git a/src/net.h b/src/net.h +index 859c52cef..fb78d289b 100644 +--- a/src/net.h ++++ b/src/net.h +@@ -28,7 +28,7 @@ + #define __NET_H + + int timeout_connect(int s, const struct sockaddr *name, socklen_t namelen, int timeout); +-int create_socket(int domain, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out); ++int create_socket(int domain, int type, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out); + int netdial(int domain, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, int timeout); + int netannounce(int domain, int proto, const char *local, const char *bind_dev, int port); + int Nread(int fd, char *buf, size_t count, int prot); diff --git a/iperf3/patches/add-sock5-proxy-tcp-support.patch b/iperf3/patches/add-sock5-proxy-tcp-support.patch new file mode 100644 index 000000000..4cb90879c --- /dev/null +++ b/iperf3/patches/add-sock5-proxy-tcp-support.patch @@ -0,0 +1,552 @@ +From 197d8ba733f0502985abb5b0a22bf9f71c2596a7 Mon Sep 17 00:00:00 2001 +From: David Bar-On +Date: Mon, 25 Mar 2024 22:11:49 +0200 +Subject: [PATCH] Add SOCKS5 Proxy support for TCP + +--- + src/iperf.h | 8 ++ + src/iperf_api.c | 250 ++++++++++++++++++++++++++++++++++++++++- + src/iperf_api.h | 13 ++- + src/iperf_client_api.c | 27 ++++- + src/iperf_error.c | 10 ++ + src/iperf_locale.c | 2 + + src/iperf_tcp.c | 22 +++- + 7 files changed, 323 insertions(+), 9 deletions(-) + +diff --git a/src/iperf.h b/src/iperf.h +index dc3c0d1df..9823dc180 100644 +--- a/src/iperf.h ++++ b/src/iperf.h +@@ -343,6 +343,14 @@ struct iperf_test + int timestamps; /* --timestamps */ + char *timestamp_format; + ++ char *socks5_host; /* --socks5 option */ ++ uint16_t socks5_port; /* --socks5 option optional value */ ++ char *socks5_username; /* --socks5 option optional value */ ++ char *socks5_password; /* --socks5 option optional value */ ++ char socks5_bind_atyp; /* from socks5 CONNECT response ATYP */ ++ char *socks5_bind_host; /* from socks5 CONNECT response BIND.ADDR*/ ++ uint16_t socks5_bind_port; /* from socks5 CONNECT response BIND.PORT */ ++ + char *json_output_string; /* rendered JSON output if json_output is set */ + /* Select related parameters */ + int max_fd; +diff --git a/src/iperf_api.c b/src/iperf_api.c +index 4765d4e97..ca47f708d 100644 +--- a/src/iperf_api.c ++++ b/src/iperf_api.c +@@ -115,7 +115,7 @@ usage() + void + usage_long(FILE *f) + { +- fprintf(f, usage_longstr, DEFAULT_NO_MSG_RCVD_TIMEOUT, UDP_RATE / (1024*1024), DEFAULT_PACING_TIMER, DURATION, DEFAULT_TCP_BLKSIZE / 1024, DEFAULT_UDP_BLKSIZE); ++ fprintf(f, usage_longstr, DEFAULT_NO_MSG_RCVD_TIMEOUT, UDP_RATE / (1024*1024), DEFAULT_PACING_TIMER, DURATION, DEFAULT_TCP_BLKSIZE / 1024, DEFAULT_UDP_BLKSIZE, SOCKS5_DEFAULT_PORT); + } + + +@@ -1100,6 +1100,7 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + {"version6", no_argument, NULL, '6'}, + {"tos", required_argument, NULL, 'S'}, + {"dscp", required_argument, NULL, OPT_DSCP}, ++ {"socks5", required_argument, NULL, OPT_SOCKS5}, + {"extra-data", required_argument, NULL, OPT_EXTRA_DATA}, + #if defined(HAVE_FLOWLABEL) + {"flowlabel", required_argument, NULL, 'L'}, +@@ -1157,7 +1158,7 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + char* comma; + #endif /* HAVE_CPU_AFFINITY */ + char* slash; +- char *p, *p1; ++ char *p, *p1, *p2; + struct xbind_entry *xbe; + double farg; + int rcv_timeout_in = 0; +@@ -1433,6 +1434,47 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + } + client_flag = 1; + break; ++ case OPT_SOCKS5: // Format: "[username:password@][:port]" ++ if (strlen(optarg) <= 0) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ p1 = strtok(optarg, "@"); // p1 -> user:password ++ if (p1 == NULL) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ p = strtok(NULL, "@"); // p -> host[:port] ++ if (p == NULL) { ++ p = p1; ++ p1 = NULL; ++ } ++ p2 = strtok(p, ":"); // parse host[:port] ++ if (strlen(p2) <= 0) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ test->socks5_host = strdup(p2); ++ p2 = strtok(NULL, ":"); ++ if (p2 && strlen(p2) > 0) { ++ test->socks5_port = atoi(p2); ++ } ++ if (p1) { // parse user:password ++ p2 = strtok(p1, ":"); ++ if (strlen(p2) <= 0 || strlen(p2) > 255) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ test->socks5_username = strdup(p2); ++ p2 = strtok(NULL, ":"); ++ if (!p2 || strlen(p2) <= 0 || strlen(p2) > 255) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ test->socks5_password = strdup(p2); ++ } ++ client_flag = 1; ++ break; + case OPT_EXTRA_DATA: + test->extra_data = strdup(optarg); + client_flag = 1; +@@ -1740,6 +1782,12 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + return -1; + } + ++ // SOCKS5 Proxy is supported only for TCP ++ if(test->role == 'c' && test->socks5_host && test->protocol->id != Ptcp) { ++ i_errno = IESOCKS5RTCPONLY; ++ return -1; ++ } ++ + if (blksize == 0) { + if (test->protocol->id == Pudp) + blksize = 0; /* try to dynamically determine from MSS */ +@@ -2943,6 +2991,12 @@ iperf_defaults(struct iperf_test *testp) + testp->stats_interval = testp->reporter_interval = 1; + testp->num_streams = 1; + ++ testp->socks5_host = NULL; ++ testp->socks5_port = SOCKS5_DEFAULT_PORT; ++ testp->socks5_username = NULL; ++ testp->socks5_password = NULL; ++ testp->socks5_bind_host = NULL; ++ + testp->settings->domain = AF_UNSPEC; + testp->settings->unit_format = 'a'; + testp->settings->socket_bufsize = 0; /* use autotuning */ +@@ -3100,6 +3154,14 @@ iperf_free_test(struct iperf_test *test) + free(test->remote_congestion_used); + if (test->timestamp_format) + free(test->timestamp_format); ++ if (test->socks5_host) ++ free(test->socks5_host); ++ if (test->socks5_username) ++ free(test->socks5_username); ++ if (test->socks5_password) ++ free(test->socks5_password); ++ if (test->socks5_bind_host) ++ free(test->socks5_bind_host); + if (test->omit_timer != NULL) + tmr_cancel(test->omit_timer); + if (test->timer != NULL) +@@ -3289,6 +3351,23 @@ iperf_reset_test(struct iperf_test *test) + free(test->extra_data); + test->extra_data = NULL; + } ++ if (test->socks5_host) { ++ free(test->socks5_host); ++ test->socks5_host = NULL; ++ } ++ test->socks5_port = SOCKS5_DEFAULT_PORT; ++ if (test->socks5_username) { ++ free(test->socks5_username); ++ test->socks5_username = NULL; ++ } ++ if (test->socks5_password) { ++ free(test->socks5_password); ++ test->socks5_password = NULL; ++ } ++ if (test->socks5_bind_host) { ++ free(test->socks5_bind_host); ++ test->socks5_bind_host = NULL; ++ } + + /* Free output line buffers, if any (on the server only) */ + struct iperf_textline *t; +@@ -4614,6 +4693,173 @@ iperf_add_stream(struct iperf_test *test, struct iperf_stream *sp) + } + } + ++/**************************************************************************/ ++ ++/* iperf_socks5_handshake ++ * ++ * Handshake with a SOCKS5 Proxy per RFC1928, RFC1929 ++ */ ++int ++iperf_socks5_handshake(struct iperf_test *test, int s) { ++ char req[1024]; ++ char res[1024]; ++ char selected_mthod; ++ char *p, *p1; ++ size_t len; ++ int ret; ++ uint16_t net_order_short; ++ ++ // Send method selection request [RFC1928] ++ p = req; ++ *p++ = 5; // VERSION ++ if (test->socks5_username) // Number of METHODs supported ++ *p++ = 2; ++ else ++ *p++ = 1; ++ *p++ = 0; // NO AUTHENTICATION REQUIRED ++ if (test->socks5_username) *p++ = 2; // USERNAME/PASSWORD ++ if (Nwrite(s, req, p - req, Ptcp) < 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Writing SOCKS5 auth methods message failed\n"); ++ return -1; ++ } ++ ++ // Receive selected method ++ if (Nread(s, res, 2, Ptcp) != 2) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Reading selected SOCKS5 method message failed\n"); ++ return -1; ++ } ++ ++ selected_mthod = res[1]; ++ if (res[0] != 5 || (selected_mthod != 0 && selected_mthod != 2)) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Ilegal SOCKS5 method selection response: version=%d, auth method=%d\n", res[0], selected_mthod); ++ return -1; ++ } ++ if (test->debug) { ++ iperf_printf(test, "SOCKS5 server selected authentication method %d\n", selected_mthod); ++ } ++ ++ // Send Username/Password request and receive the auth response [RFC1929] ++ if (selected_mthod == 2) { ++ p = req; ++ *p++ = 1; // VERSION ++ len = strlen(test->socks5_username); ++ *p++ = len; ++ memcpy(p, test->socks5_username, len); // USERNAME ++ p += len; ++ len = strlen(test->socks5_password); ++ *p++ = len; ++ memcpy(p, test->socks5_password, len); // PASSWORD ++ p += len; ++ ++ if (Nwrite(s, req, p - req, Ptcp) < 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Writing SOCKS5 Username/Password request message failed\n"); ++ return -1; ++ } ++ ++ if ((ret = Nread(s, res, 2, Ptcp)) != 2) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Reading SOCKS5 Username/Password response failed; Returned %d\n", ret); ++ return -1; ++ } ++ if (res[1] != 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "SOCKS5 Username/Password failed with error %d\n", res[1]); ++ return -1; ++ } ++ } ++ ++ // Send CONNECT request [RFC1928] ++ p = req; ++ *p++ = 5; // VERSION ++ *p++ = 1; // CMD = CONNECT ++ *p++ = 0; // RESERVED ++ *p++ = 3; // ATYPE = DOMAINNAME: ++ len = strlen(test->server_hostname); ++ if (len > 255) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "iperf3 host option length is limited to 255 chars when SOCKS5 is used\n"); ++ return -1; ++ } ++ *p++ = len; ++ memcpy(p, test->server_hostname, len); // ADDR ++ p += len; ++ net_order_short = htons(test->server_port); ++ p1 = (char *)&net_order_short; ++ *p++ = *p1++; // PORT ++ *p++ = *p1; ++ if (Nwrite(s, req, p - req, Ptcp) < 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Writing SOCKS5 CONNECT message failed\n"); ++ return -1; ++ } ++ ++ // Read CONNECT response [RFC1928] ++ if ((ret = Nread(s, res, 4, Ptcp)) != 4) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Reading SOCKS5 CONNECT response failed; Returned %d\n", ret); ++ return -1; ++ } ++ ++ if (res[0] != 5 || res[1] != 0 || res[2] != 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "SOCKS5 CONNECT failed with error %d\n", res[1]); ++ return -1; ++ } ++ ++ // Get BND.ADDR length ++ test->socks5_bind_atyp = res[3]; // ATYP ++ switch (test->socks5_bind_atyp) { ++ case 1: // IP V4 address ++ len = 4; ++ break; ++ case 3: // DOMAINNAME: ++ if ((ret = read(s, res, 1)) != 1) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Failed to read SOCKS5 CONNECT response BND.ADDR length; Returned %d\n", ret); ++ return -1; ++ } ++ len = (unsigned char)res[0]; ++ break; ++ case 4: // IP V6 address ++ len = 16; ++ break; ++ default: ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Illegal SOCKS5 CONNECT response ATYP %d\n", res[3]); ++ return -1; ++ } ++ // Read BND.ADDR ++ if ((ret = Nread(s, res, len, Ptcp)) != len) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Failed to read SOCKS5 detailes BND.ADDR; Returned %d\n", ret); ++ return -1; ++ } ++ res[len] = '\0'; ++ test->socks5_bind_host = strdup(res); ++ // Read BND.PORT ++ if ((ret = Nread(s, res, 2, Ptcp)) != 2) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Failed to read SOCKS5 detailes BND.PORT; Returned %d\n", ret); ++ return -1; ++ } ++ p1 = (char *)&net_order_short; ++ *p1++ = res[0]; ++ *p1 = res[1]; ++ test->socks5_bind_port = ntohs(net_order_short); ++ if (test->debug) { ++ iperf_printf(test, "SOCKS5 server BIND ADDR type=%d, PORT=%d\n", test->socks5_bind_atyp, test->socks5_bind_port); ++ } ++ ++ return 0; ++} ++ ++/**************************************************************************/ ++ ++ + /* This pair of routines gets inserted into the snd/rcv function pointers + ** when there's a -F flag. They handle the file stuff and call the real + ** snd/rcv functions, which have been saved in snd2/rcv2. +diff --git a/src/iperf_api.h b/src/iperf_api.h +index d2bbdfe96..01d63bf5e 100644 +--- a/src/iperf_api.h ++++ b/src/iperf_api.h +@@ -68,6 +68,7 @@ typedef atomic_uint_fast64_t atomic_iperf_size_t; + #define DEFAULT_PACING_TIMER 1000 + #define DEFAULT_NO_MSG_RCVD_TIMEOUT 120000 + #define MIN_NO_MSG_RCVD_TIMEOUT 100 ++#define SOCKS5_DEFAULT_PORT 1080 + + #define WARN_STR_LEN 128 + +@@ -100,7 +101,8 @@ typedef atomic_uint_fast64_t atomic_iperf_size_t; + #define OPT_RCV_TIMEOUT 27 + #define OPT_JSON_STREAM 28 + #define OPT_SND_TIMEOUT 29 + #define OPT_USE_PKCS1_PADDING 30 ++#define OPT_SOCKS5 31 + + /* states */ + #define TEST_START 1 +@@ -308,6 +310,12 @@ void iperf_free_stream(struct iperf_stream * sp); + */ + int iperf_common_sockopts(struct iperf_test *, int s); + ++/** ++ * iperf_socks5_handshake - handshake with a SOCKS5 Proxy per RFC1928, RFC1929 ++ * ++ */ ++int iperf_socks5_handshake(struct iperf_test *test, int s); ++ + int has_tcpinfo(void); + int has_tcpinfo_retransmits(void); + void save_tcpinfo(struct iperf_stream *sp, struct iperf_interval_results *irp); +@@ -419,6 +427,8 @@ enum { + IESNDTIMEOUT = 33, // Illegal message send timeout + IEUDPFILETRANSFER = 34, // Cannot transfer file using UDP + IESERVERAUTHUSERS = 35, // Cannot access authorized users file ++ IESOCKS5HOST = 36, // Illegal SOCKS5 host / creadentials ++ IESOCKS5RTCPONLY = 37, // SOCKS5 Proxy is supported only for TCP + /* Test errors */ + IENEWTEST = 100, // Unable to create a new test (check perror) + IEINITTEST = 101, // Test initialization failed (check perror) +@@ -473,8 +483,9 @@ enum { + IEPTHREADCANCEL=151, // Unable to cancel thread (check perror) + IEPTHREADJOIN=152, // Unable to join thread (check perror) + IEPTHREADATTRINIT=153, // Unable to initialize thread attribute (check perror) + IEPTHREADATTRDESTROY=154, // Unable to destroy thread attribute (check perror) + IEPTHREADSIGMASK=155, // Unable to initialize sub thread signal mask (check perror) ++ IESOCKS5HANDSHAKE = 156, // SOCKS5 Handshake with the server failed + /* Stream errors */ + IECREATESTREAM = 200, // Unable to create a new stream (check herror/perror) + IEINITSTREAM = 201, // Unable to initialize stream (check herror/perror) +diff --git a/src/iperf_client_api.c b/src/iperf_client_api.c +index 7ad4c939b..670e3521d 100644 +--- a/src/iperf_client_api.c ++++ b/src/iperf_client_api.c +@@ -385,6 +385,8 @@ iperf_connect(struct iperf_test *test) + { + int opt; + socklen_t len; ++ const char *connect_server; ++ int connect_port; + + if (NULL == test) + { +@@ -397,12 +399,20 @@ iperf_connect(struct iperf_test *test) + make_cookie(test->cookie); + + /* Create and connect the control channel */ +- if (test->ctrl_sck < 0) +- // Create the control channel using an ephemeral port +- test->ctrl_sck = netdial(test->settings->domain, Ptcp, test->bind_address, test->bind_dev, 0, test->server_hostname, test->server_port, test->settings->connect_timeout); + if (test->ctrl_sck < 0) { +- i_errno = IECONNECT; +- return -1; ++ if (test->socks5_host) { ++ connect_server = test->socks5_host; ++ connect_port = test->socks5_port; ++ } else { ++ connect_server = test->server_hostname; ++ connect_port = test->server_port; ++ } ++ // Create the control channel using an ephemeral port ++ test->ctrl_sck = netdial(test->settings->domain, Ptcp, test->bind_address, test->bind_dev, 0, connect_server, connect_port, test->settings->connect_timeout); ++ if (test->ctrl_sck < 0) { ++ i_errno = IECONNECT; ++ return -1; ++ } + } + + // set TCP_NODELAY for lower latency on control messages +@@ -421,6 +431,13 @@ iperf_connect(struct iperf_test *test) + } + #endif /* HAVE_TCP_USER_TIMEOUT */ + ++ /* socks5 proxy handshake */ ++ if (test->socks5_host) { ++ if (0 != iperf_socks5_handshake(test, test->ctrl_sck)) { ++ return -1; ++ } ++ } ++ + if (Nwrite(test->ctrl_sck, test->cookie, COOKIE_SIZE, Ptcp) < 0) { + i_errno = IESENDCOOKIE; + return -1; +diff --git a/src/iperf_error.c b/src/iperf_error.c +index 6426554cf..a0bbb6844 100644 +--- a/src/iperf_error.c ++++ b/src/iperf_error.c +@@ -216,6 +216,9 @@ iperf_strerror(int int_errno) + case IEUNIMP: + snprintf(errstr, len, "an option you are trying to set is not implemented yet"); + break; ++ case IESOCKS5HOST: ++ snprintf(errstr, len, "ilegal SOCKS5 host / creadentials"); ++ break; + case IEFILE: + snprintf(errstr, len, "unable to open -F file"); + perr = 1; +@@ -375,6 +378,9 @@ iperf_strerror(int int_errno) + case IEUDPFILETRANSFER: + snprintf(errstr, len, "cannot transfer file using UDP"); + break; ++ case IESOCKS5RTCPONLY: ++ snprintf(errstr, len, "SOCKS5 Proxy is supported only for TCP"); ++ break; + case IERVRSONLYRCVTIMEOUT: + snprintf(errstr, len, "client receive timeout is valid only in receiving mode"); + perr = 1; +@@ -507,6 +513,10 @@ iperf_strerror(int int_errno) + snprintf(errstr, len, "unable to destroy thread attributes"); + perr = 1; + break; ++ case IESOCKS5HANDSHAKE: ++ snprintf(errstr, len, "socks5 Handshake with the server failed"); ++ perr = 1; ++ break; + default: + snprintf(errstr, len, "int_errno=%d", int_errno); + perr = 1; +diff --git a/src/iperf_locale.c b/src/iperf_locale.c +index ae0f63a41..c8b9a71d1 100644 +--- a/src/iperf_locale.c ++++ b/src/iperf_locale.c +@@ -194,6 +194,8 @@ const char usage_longstr[] = "Usage: iperf3 [-s|-c host] [options]\n" + " --dscp N or --dscp val set the IP dscp value, either 0-63 or symbolic.\n" + " Numeric values can be specified in decimal,\n" + " octal and hex (see --tos above).\n" ++ " --socks5 [user:password@][:port] use SOCKS5 Proxy for TCP connections,\n" ++ " using no auth or user:password. Default Proxy port is %d \n" + #if defined(HAVE_FLOWLABEL) + " -L, --flowlabel N set the IPv6 flow label (only supported on Linux)\n" + #endif /* HAVE_FLOWLABEL */ +diff --git a/src/iperf_tcp.c b/src/iperf_tcp.c +index 184a1955e..515913581 100644 +--- a/src/iperf_tcp.c ++++ b/src/iperf_tcp.c +@@ -375,14 +375,24 @@ iperf_tcp_connect(struct iperf_test *test) + socklen_t optlen; + int saved_errno; + int rcvbuf_actual, sndbuf_actual; + int proto = 0; ++ const char *connect_server; ++ int connect_port; + + #if defined(HAVE_IPPROTO_MPTCP) + if (test->mptcp) + proto = IPPROTO_MPTCP; + #endif + +- s = create_socket(test->settings->domain, SOCK_STREAM, proto, test->bind_address, test->bind_dev, test->bind_port, test->server_hostname, test->server_port, &server_res); ++ if (test->socks5_host) { ++ connect_server = test->socks5_host; ++ connect_port = test->socks5_port; ++ } else { ++ connect_server = test->server_hostname; ++ connect_port = test->server_port; ++ } ++ ++ s = create_socket(test->settings->domain, SOCK_STREAM, proto, test->bind_address, test->bind_dev, test->bind_port, connect_server, connect_port, &server_res); + if (s < 0) { + i_errno = IESTREAMCONNECT; + return -1; +@@ -571,6 +581,16 @@ iperf_tcp_connect(struct iperf_test *test) + + freeaddrinfo(server_res); + ++ /* socks5 proxy handshake */ ++ if (test->socks5_host) { ++ if (0 != iperf_socks5_handshake(test, s)) { ++ saved_errno = errno; ++ close(s); ++ errno = saved_errno; ++ return -1; ++ } ++ } ++ + /* Send cookie for verification */ + if (Nwrite(s, test->cookie, COOKIE_SIZE, Ptcp) < 0) { + saved_errno = errno; diff --git a/iproute2/Makefile b/iproute2/Makefile new file mode 100644 index 000000000..ca6793d49 --- /dev/null +++ b/iproute2/Makefile @@ -0,0 +1,268 @@ +# +# Copyright (C) 2006-2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=iproute2 +PKG_VERSION:=6.12.0 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 +PKG_HASH:=bbd141ef7b5d0127cc2152843ba61f274dc32814fa3e0f13e7d07a080bef53d9 +PKG_BUILD_PARALLEL:=1 +PKG_BUILD_DEPENDS:=iptables +PKG_LICENSE:=GPL-2.0 +PKG_CPE_ID:=cpe:/a:iproute2_project:iproute2 + +PKG_BUILD_FLAGS:=gc-sections lto + +include $(INCLUDE_DIR)/kernel.mk +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk + +define Package/iproute2/Default + SECTION:=net + CATEGORY:=Network + URL:=http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2 + SUBMENU:=Routing and Redirection + MAINTAINER:=Russell Senior +endef + +define Package/ip-tiny +$(call Package/iproute2/Default) + TITLE:=Routing control utility (minimal) + VARIANT:=iptiny + DEFAULT_VARIANT:=1 + PROVIDES:=ip + ALTERNATIVES:=200:/sbin/ip:/usr/libexec/ip-tiny + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/ip-full +$(call Package/iproute2/Default) + TITLE:=Routing control utility (full) + VARIANT:=ipfull + PROVIDES:=ip + ALTERNATIVES:=300:/sbin/ip:/usr/libexec/ip-full + DEPENDS:=+libnl-tiny +libbpf +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/tc-tiny +$(call Package/iproute2/Default) + TITLE:=Traffic control utility (minimal) + VARIANT:=tctiny + DEFAULT_VARIANT:=1 + PROVIDES:=tc + ALTERNATIVES:=200:/sbin/tc:/usr/libexec/tc-tiny + DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/tc-bpf +$(call Package/iproute2/Default) + TITLE:=Traffic control utility (bpf) + VARIANT:=tcbpf + PROVIDES:=tc + ALTERNATIVES:=300:/sbin/tc:/usr/libexec/tc-bpf + DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +endef + +define Package/tc-full +$(call Package/iproute2/Default) + TITLE:=Traffic control utility (full) + VARIANT:=tcfull + PROVIDES:=tc + ALTERNATIVES:=400:/sbin/tc:/usr/libexec/tc-full + DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +libxtables +endef + +define Package/genl +$(call Package/iproute2/Default) + TITLE:=General netlink utility frontend + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/ip-bridge +$(call Package/iproute2/Default) + TITLE:=Bridge configuration utility from iproute2 + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/ss +$(call Package/iproute2/Default) + TITLE:=Socket statistics utility + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +kmod-netlink-diag +endef + +define Package/nstat +$(call Package/iproute2/Default) + TITLE:=Network statistics utility + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/devlink +$(call Package/iproute2/Default) + TITLE:=Network devlink utility + DEPENDS:=+libmnl +endef + +define Package/rdma +$(call Package/iproute2/Default) + TITLE:=Network rdma utility + DEPENDS:=+libmnl +endef + +ifeq ($(BUILD_VARIANT),iptiny) + IP_CONFIG_TINY:=y + LIBBPF_FORCE:=off +endif + +ifeq ($(BUILD_VARIANT),ipfull) + HAVE_ELF:=y + LIBBPF_FORCE:=on +endif + +ifeq ($(BUILD_VARIANT),tctiny) + LIBBPF_FORCE:=off +endif + +ifeq ($(BUILD_VARIANT),tcbpf) + HAVE_ELF:=y + LIBBPF_FORCE:=on + SHARED_LIBS:=y +endif + +ifeq ($(BUILD_VARIANT),tcfull) + #enable iptables/xtables requirement only if tciptables variant is selected + TC_CONFIG_XT:=y + TC_CONFIG_XT_OLD:=y + TC_CONFIG_XT_OLD_H:=y + TC_CONFIG_IPSET:=y + HAVE_ELF:=y + LIBBPF_FORCE:=on + SHARED_LIBS:=y +else + #disable iptables requirement by default + TC_CONFIG_XT:=n + TC_CONFIG_XT_OLD:=n + TC_CONFIG_XT_OLD_H:=n + TC_CONFIG_IPSET:=n +endif + +ifdef CONFIG_PACKAGE_devlink + HAVE_MNL:=y +endif + +ifdef CONFIG_PACKAGE_rdma + HAVE_MNL:=y +endif + +define Build/Configure + echo "static const char SNAPSHOT[] = \"$(PKG_VERSION)-$(PKG_RELEASE)-openwrt\";" \ + > $(PKG_BUILD_DIR)/include/SNAPSHOT.h +endef + +TARGET_LDFLAGS += -Wl,--as-needed +TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny + +MAKE_FLAGS += \ + KERNEL_INCLUDE="$(LINUX_DIR)/include/uapi" \ + SHARED_LIBS=$(SHARED_LIBS) \ + IP_CONFIG_TINY=$(IP_CONFIG_TINY) \ + BUILD_VARIANT=$(BUILD_VARIANT) \ + LIBBPF_FORCE=$(LIBBPF_FORCE) \ + HAVE_ELF=$(HAVE_ELF) \ + HAVE_MNL=$(HAVE_MNL) \ + HAVE_CAP=$(HAVE_CAP) \ + HAVE_TIRPC=n \ + IPT_LIB_DIR=/usr/lib/iptables \ + XT_LIB_DIR=/usr/lib/iptables \ + TC_CONFIG_XT=$(TC_CONFIG_XT) \ + TC_CONFIG_XT_OLD=$(TC_CONFIG_XT_OLD) \ + TC_CONFIG_XT_OLD_H=$(TC_CONFIG_XT_OLD_H) \ + TC_CONFIG_IPSET=$(TC_CONFIG_IPSET) \ + FPIC="$(FPIC)" \ + $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') + +define Build/Compile + +$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include/iproute2 + $(CP) $(PKG_BUILD_DIR)/include/bpf_elf.h $(1)/usr/include/iproute2 + $(CP) $(PKG_BUILD_DIR)/include/{libgenl,libnetlink}.h $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/lib/libnetlink.a $(1)/usr/lib/ +endef + +define Package/ip-tiny/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-tiny +endef + +define Package/ip-full/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-full +endef + +define Package/tc-tiny/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-tiny +endef + +define Package/tc-bpf/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-bpf +endef + +define Package/tc-full/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-full +endef + +define Package/genl/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/genl/genl $(1)/usr/sbin/ +endef + +define Package/ip-bridge/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/bridge/bridge $(1)/usr/sbin/ +endef + +define Package/ss/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/ss $(1)/usr/sbin/ +endef + +define Package/nstat/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/nstat $(1)/usr/sbin/ +endef + +define Package/devlink/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/devlink/devlink $(1)/usr/sbin/ +endef + +define Package/rdma/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rdma/rdma $(1)/usr/sbin/ +endef + +$(eval $(call BuildPackage,ip-tiny)) +$(eval $(call BuildPackage,ip-full)) +$(eval $(call BuildPackage,tc-tiny)) +$(eval $(call BuildPackage,tc-bpf)) +$(eval $(call BuildPackage,tc-full)) +$(eval $(call BuildPackage,genl)) +$(eval $(call BuildPackage,ip-bridge)) +$(eval $(call BuildPackage,ss)) +$(eval $(call BuildPackage,nstat)) +$(eval $(call BuildPackage,devlink)) +$(eval $(call BuildPackage,rdma)) diff --git a/iproute2/patches/013-endian.h.patch b/iproute2/patches/013-endian.h.patch new file mode 100644 index 000000000..a81c3b5ee --- /dev/null +++ b/iproute2/patches/013-endian.h.patch @@ -0,0 +1,22 @@ +From c8b3ecc22ed0edaf0259eaf7d1a5c04f300ad6e4 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 11:24:18 -0800 +Subject: [PATCH] libnetlink: add missing endian.h + +Need endian.h to get htobe64 with musl. + +Signed-off-by: Stephen Hemminger +--- + include/libnetlink.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/include/libnetlink.h ++++ b/include/libnetlink.h +@@ -4,6 +4,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/iproute2/patches/014-basename.patch b/iproute2/patches/014-basename.patch new file mode 100644 index 000000000..f98238ec6 --- /dev/null +++ b/iproute2/patches/014-basename.patch @@ -0,0 +1,29 @@ +From fa3949b792e275f75d7d6200dc2036ef7fff8816 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 11:21:56 -0800 +Subject: [PATCH] rdma: add missing header for basename + +The function basename prototype is in libgen.h +Fixes build on musl + +Signed-off-by: Stephen Hemminger +--- + rdma/rdma.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/rdma/rdma.h ++++ b/rdma/rdma.h +@@ -10,11 +10,12 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include + #include +-#include + #include + + #include "list.h" diff --git a/iproute2/patches/015-limits.h.patch b/iproute2/patches/015-limits.h.patch new file mode 100644 index 000000000..e212b88eb --- /dev/null +++ b/iproute2/patches/015-limits.h.patch @@ -0,0 +1,84 @@ +From 7e23da91fca6e5dedeb32a7d308cf20982e897c3 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Tue, 10 Dec 2024 13:38:08 -0800 +Subject: [PATCH] ip: rearrange and prune header files + +The recent report of issues with missing limits.h impacting musl +suggested looking at what files are and are not included in ip code. + +The standard practice is to put standard headers first, then system, +then local headers. Used iwyu to get suggestions about missing +and extraneous headers. + +Signed-off-by: Stephen Hemminger +--- + ip/iplink.c | 13 +++++-------- + ip/ipnetns.c | 19 +++++++++---------- + 2 files changed, 14 insertions(+), 18 deletions(-) + +--- a/ip/iplink.c ++++ b/ip/iplink.c +@@ -11,17 +11,14 @@ + #include + #include + #include ++#include ++#include ++#include ++ + #include ++#include + #include +-#include + #include +-#include +-#include +-#include +-#include +-#include +-#include +-#include + + #include "rt_names.h" + #include "utils.h" +--- a/ip/ipnetns.c ++++ b/ip/ipnetns.c +@@ -1,21 +1,21 @@ + /* SPDX-License-Identifier: GPL-2.0 */ + #define _ATFILE_SOURCE +-#include +-#include +-#include +-#include +-#include +-#include +-#include ++ + #include ++#include + #include +-#include + #include + #include + #include + #include + #include +-#include ++#include ++ ++#include ++#include ++#include ++#include ++#include + + #include + +@@ -23,7 +23,6 @@ + #include "list.h" + #include "ip_common.h" + #include "namespace.h" +-#include "json_print.h" + + static int usage(void) + { diff --git a/iproute2/patches/016-limits.h.patch b/iproute2/patches/016-limits.h.patch new file mode 100644 index 000000000..c20404f6f --- /dev/null +++ b/iproute2/patches/016-limits.h.patch @@ -0,0 +1,26 @@ +From f982f30e166a02e09097de05129449031ba51f76 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 11:29:44 -0800 +Subject: [PATCH] cg_map: use limits.h + +Prefer limits.h from system headers over linux/limits.h +Fixes build with musl. + +Signed-off-by: Stephen Hemminger +--- + lib/cg_map.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/lib/cg_map.c ++++ b/lib/cg_map.c +@@ -9,8 +9,9 @@ + #include + #include + #include ++#include ++ + #include +-#include + #include + + #include "cg_map.h" diff --git a/iproute2/patches/017-linux-limits.patch b/iproute2/patches/017-linux-limits.patch new file mode 100644 index 000000000..0c5d13840 --- /dev/null +++ b/iproute2/patches/017-linux-limits.patch @@ -0,0 +1,178 @@ +From ac547ad027e3d4e283202ecb487cf54707234491 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 14:15:59 -0800 +Subject: [PATCH] flower: replace XATTR_SIZE_MAX + +The flower tc parser was using XATTR_SIZE_MAX from linux/limits.h, +but this constant is intended to before extended filesystem attributes +not for TC. Replace it with a local define. + +This fixes issue on systems with musl and XATTR_SIZE_MAX is not +defined in limits.h there. + +Signed-off-by: Stephen Hemminger +--- + tc/f_flower.c | 37 ++++++++++++++++++++----------------- + 1 file changed, 20 insertions(+), 17 deletions(-) + +--- a/tc/f_flower.c ++++ b/tc/f_flower.c +@@ -10,7 +10,7 @@ + #include + #include + #include +-#include ++ + #include + #include + #include +@@ -22,6 +22,9 @@ + #include "tc_util.h" + #include "rt_names.h" + ++/* maximum length of options string */ ++#define FLOWER_OPTS_MAX 4096 ++ + #ifndef IPPROTO_L2TP + #define IPPROTO_L2TP 115 + #endif +@@ -1252,7 +1255,7 @@ static int flower_check_enc_opt_key(char + + static int flower_parse_enc_opts_geneve(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + int data_len, key_len, mask_len, err; + char *token, *slash; + struct rtattr *nest; +@@ -1265,7 +1268,7 @@ static int flower_parse_enc_opts_geneve( + if (slash) + *slash = '\0'; + +- if ((key_len + strlen(token) > XATTR_SIZE_MAX) || ++ if ((key_len + strlen(token) > FLOWER_OPTS_MAX) || + flower_check_enc_opt_key(token)) + return -1; + +@@ -1275,7 +1278,7 @@ static int flower_parse_enc_opts_geneve( + + if (!slash) { + /* Pad out mask when not provided */ +- if (mask_len + strlen(token) > XATTR_SIZE_MAX) ++ if (mask_len + strlen(token) > FLOWER_OPTS_MAX) + return -1; + + data_len = strlen(rindex(token, ':')); +@@ -1288,7 +1291,7 @@ static int flower_parse_enc_opts_geneve( + continue; + } + +- if (mask_len + strlen(slash + 1) > XATTR_SIZE_MAX) ++ if (mask_len + strlen(slash + 1) > FLOWER_OPTS_MAX) + return -1; + + strcpy(&mask[mask_len], slash + 1); +@@ -1318,7 +1321,7 @@ static int flower_parse_enc_opts_geneve( + + static int flower_parse_enc_opts_vxlan(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1326,14 +1329,14 @@ static int flower_parse_enc_opts_vxlan(c + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else { + strcpy(mask, "0xffffffff"); + } + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + +@@ -1355,7 +1358,7 @@ static int flower_parse_enc_opts_vxlan(c + + static int flower_parse_enc_opts_erspan(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1364,7 +1367,7 @@ static int flower_parse_enc_opts_erspan( + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else { +@@ -1376,7 +1379,7 @@ static int flower_parse_enc_opts_erspan( + strcpy(mask + index, ":0xffffffff:0xff:0xff"); + } + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + +@@ -1398,7 +1401,7 @@ static int flower_parse_enc_opts_erspan( + + static int flower_parse_enc_opts_gtp(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1406,13 +1409,13 @@ static int flower_parse_enc_opts_gtp(cha + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else + strcpy(mask, "ff:ff"); + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + +@@ -1433,7 +1436,7 @@ static int flower_parse_enc_opts_gtp(cha + + static int flower_parse_enc_opts_pfcp(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1442,14 +1445,14 @@ static int flower_parse_enc_opts_pfcp(ch + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else { + strcpy(mask, "ff:ffffffffffffffff"); + } + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + diff --git a/iproute2/patches/018-linux-limits.patch b/iproute2/patches/018-linux-limits.patch new file mode 100644 index 000000000..8c2669acd --- /dev/null +++ b/iproute2/patches/018-linux-limits.patch @@ -0,0 +1,37 @@ +From 458dce5d0431f0589aca1bc841904b5d1db3bbce Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 14:18:35 -0800 +Subject: [PATCH] uapi: remove no longer used linux/limits.h + +Code is now using limits.h instead. + +Signed-off-by: Stephen Hemminger +--- + include/uapi/linux/limits.h | 21 --------------------- + 1 file changed, 21 deletions(-) + delete mode 100644 include/uapi/linux/limits.h + +--- a/include/uapi/linux/limits.h ++++ /dev/null +@@ -1,21 +0,0 @@ +-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +-#ifndef _LINUX_LIMITS_H +-#define _LINUX_LIMITS_H +- +-#define NR_OPEN 1024 +- +-#define NGROUPS_MAX 65536 /* supplemental group IDs are available */ +-#define ARG_MAX 131072 /* # bytes of args + environ for exec() */ +-#define LINK_MAX 127 /* # links a file may have */ +-#define MAX_CANON 255 /* size of the canonical input queue */ +-#define MAX_INPUT 255 /* size of the type-ahead buffer */ +-#define NAME_MAX 255 /* # chars in a file name */ +-#define PATH_MAX 4096 /* # chars in a path name including nul */ +-#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */ +-#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */ +-#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */ +-#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */ +- +-#define RTSIG_MAX 32 +- +-#endif diff --git a/iproute2/patches/110-darwin_fixes.patch b/iproute2/patches/110-darwin_fixes.patch new file mode 100644 index 000000000..06ae59f8b --- /dev/null +++ b/iproute2/patches/110-darwin_fixes.patch @@ -0,0 +1,59 @@ +--- a/netem/maketable.c ++++ b/netem/maketable.c +@@ -11,7 +11,9 @@ + #include + #include + #include ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include ++#endif + #include + #include + #include +--- a/netem/normal.c ++++ b/netem/normal.c +@@ -9,8 +9,12 @@ + #include + #include + ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include + #include ++#else ++#define NETEM_DIST_SCALE 8192 ++#endif + + #define TABLESIZE 16384 + #define TABLEFACTOR NETEM_DIST_SCALE +--- a/netem/pareto.c ++++ b/netem/pareto.c +@@ -8,8 +8,12 @@ + #include + #include + ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include + #include ++#else ++#define NETEM_DIST_SCALE 8192 ++#endif + + static const double a=3.0; + #define TABLESIZE 16384 +--- a/netem/paretonormal.c ++++ b/netem/paretonormal.c +@@ -15,10 +15,13 @@ + #include + #include + #include ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include +- + #include + #include ++#else ++#define NETEM_DIST_SCALE 8192 ++#endif + + #define TABLESIZE 16384 + #define TABLEFACTOR NETEM_DIST_SCALE diff --git a/iproute2/patches/115-add-config-xtlibdir.patch b/iproute2/patches/115-add-config-xtlibdir.patch new file mode 100644 index 000000000..38448e6cd --- /dev/null +++ b/iproute2/patches/115-add-config-xtlibdir.patch @@ -0,0 +1,12 @@ +--- a/tc/Makefile ++++ b/tc/Makefile +@@ -107,6 +107,9 @@ CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PR + ifneq ($(IPT_LIB_DIR),) + CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\" + endif ++ifneq ($(XT_LIB_DIR),) ++ CFLAGS += -DXT_LIB_DIR=\"$(XT_LIB_DIR)\" ++endif + + LEX := flex + CFLAGS += -DYY_NO_INPUT diff --git a/iproute2/patches/120-no_arpd_ifstat_rtacct_lnstat.patch b/iproute2/patches/120-no_arpd_ifstat_rtacct_lnstat.patch new file mode 100644 index 000000000..bb6a8d018 --- /dev/null +++ b/iproute2/patches/120-no_arpd_ifstat_rtacct_lnstat.patch @@ -0,0 +1,20 @@ +--- a/misc/Makefile ++++ b/misc/Makefile +@@ -2,13 +2,13 @@ + SSOBJ=ss.o ssfilter_check.o ssfilter.tab.o + LNSTATOBJ=lnstat.o lnstat_util.o + +-TARGETS=ss nstat ifstat rtacct lnstat ++TARGETS=ss nstat + + include ../config.mk + +-ifeq ($(HAVE_BERKELEY_DB),y) +- TARGETS += arpd +-endif ++#ifeq ($(HAVE_BERKELEY_DB),y) ++# TARGETS += arpd ++#endif + + all: $(TARGETS) + diff --git a/iproute2/patches/130-no_netem_tipc_dcb_man_vdpa.patch b/iproute2/patches/130-no_netem_tipc_dcb_man_vdpa.patch new file mode 100644 index 000000000..7f946070f --- /dev/null +++ b/iproute2/patches/130-no_netem_tipc_dcb_man_vdpa.patch @@ -0,0 +1,14 @@ +--- a/Makefile ++++ b/Makefile +@@ -69,9 +69,9 @@ WFLAGS += -Wmissing-declarations -Wold-s + CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS) + YACCFLAGS = -d -t -v + +-SUBDIRS=lib ip tc bridge misc netem genl man ++SUBDIRS=lib ip tc bridge misc genl + ifeq ($(HAVE_MNL),y) +-SUBDIRS += tipc devlink rdma dcb vdpa ++SUBDIRS += devlink rdma + endif + + LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a diff --git a/iproute2/patches/140-allow_pfifo_fast.patch b/iproute2/patches/140-allow_pfifo_fast.patch new file mode 100644 index 000000000..8f5a7d352 --- /dev/null +++ b/iproute2/patches/140-allow_pfifo_fast.patch @@ -0,0 +1,9 @@ +--- a/tc/q_fifo.c ++++ b/tc/q_fifo.c +@@ -90,5 +90,6 @@ struct qdisc_util pfifo_head_drop_qdisc_ + + struct qdisc_util pfifo_fast_qdisc_util = { + .id = "pfifo_fast", ++ .parse_qopt = fifo_parse_opt, + .print_qopt = prio_print_opt, + }; diff --git a/iproute2/patches/140-keep_libmnl_optional.patch b/iproute2/patches/140-keep_libmnl_optional.patch new file mode 100644 index 000000000..48a4ae751 --- /dev/null +++ b/iproute2/patches/140-keep_libmnl_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -368,7 +368,7 @@ check_tirpc() + + check_mnl() + { +- if ${PKG_CONFIG} libmnl --exists; then ++ if [ "${HAVE_MNL}" = "y" ] && ${PKG_CONFIG} libmnl --exists; then + echo "HAVE_MNL:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/145-keep_libelf_optional.patch b/iproute2/patches/145-keep_libelf_optional.patch new file mode 100644 index 000000000..99b9d326f --- /dev/null +++ b/iproute2/patches/145-keep_libelf_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -217,7 +217,7 @@ EOF + + check_elf() + { +- if ${PKG_CONFIG} libelf --exists; then ++ if [ "${HAVE_ELF}" = "y" ] && ${PKG_CONFIG} libelf --exists; then + echo "HAVE_ELF:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/150-keep_libcap_optional.patch b/iproute2/patches/150-keep_libcap_optional.patch new file mode 100644 index 000000000..49873f87b --- /dev/null +++ b/iproute2/patches/150-keep_libcap_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -427,7 +427,7 @@ EOF + + check_cap() + { +- if ${PKG_CONFIG} libcap --exists; then ++ if [ "${HAVE_CAP}" = "y" ] && ${PKG_CONFIG} libcap --exists; then + echo "HAVE_CAP:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/155-keep_tirpc_optional.patch b/iproute2/patches/155-keep_tirpc_optional.patch new file mode 100644 index 000000000..9e5e4330c --- /dev/null +++ b/iproute2/patches/155-keep_tirpc_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -355,7 +355,7 @@ check_selinux() + + check_tirpc() + { +- if ${PKG_CONFIG} libtirpc --exists; then ++ if [ "${HAVE_TIRPC}" = "y" ] && ${PKG_CONFIG} libtirpc --exists; then + echo "HAVE_RPC:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/160-libnetlink-pic.patch b/iproute2/patches/160-libnetlink-pic.patch new file mode 100644 index 000000000..145ec7a9e --- /dev/null +++ b/iproute2/patches/160-libnetlink-pic.patch @@ -0,0 +1,11 @@ +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -1,7 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0 + include ../config.mk + +-CFLAGS += -fPIC ++CFLAGS += $(FPIC) + + UTILOBJ = utils.o utils_math.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \ + inet_proto.o namespace.o json_writer.o json_print.o json_print_math.o \ diff --git a/iproute2/patches/170-ip_tiny.patch b/iproute2/patches/170-ip_tiny.patch new file mode 100644 index 000000000..149bcd2af --- /dev/null +++ b/iproute2/patches/170-ip_tiny.patch @@ -0,0 +1,108 @@ +--- a/ip/Makefile ++++ b/ip/Makefile +@@ -19,6 +19,13 @@ RTMONOBJ=rtmon.o + + include ../config.mk + ++STATIC_SYM_FILTER:= ++ifeq ($(IP_CONFIG_TINY),y) ++ STATIC_SYM_FILTER:=iplink_can.c iplink_ipoib.c iplink_vxlan.c ++ CFLAGS += -DIPROUTE2_TINY ++endif ++STATIC_SYM_SOURCES:=$(filter-out $(STATIC_SYM_FILTER),$(wildcard *.c)) ++ + ALLOBJ=$(IPOBJ) $(RTMONOBJ) + SCRIPTS=routel + TARGETS=ip rtmon +@@ -48,7 +55,7 @@ else + + ip: static-syms.o + static-syms.o: static-syms.h +-static-syms.h: $(wildcard *.c) ++static-syms.h: $(STATIC_SYM_SOURCES) + files="$^" ; \ + for s in `grep -B 3 '\ +Date: Thu, 30 May 2013 11:54:04 +0200 +Subject: [PATCH] add support for dropping with FAILED_POLICY + +--- + include/linux/fib_rules.h | 4 ++++ + include/linux/rtnetlink.h | 1 + + ip/rtm_map.c | 4 ++++ + 3 files changed, 9 insertions(+) + +--- a/ip/rtm_map.c ++++ b/ip/rtm_map.c +@@ -49,6 +49,8 @@ char *rtnl_rtntype_n2a(int id, char *buf + return "nat"; + case RTN_XRESOLVE: + return "xresolve"; ++ case RTN_FAILED_POLICY: ++ return "failed_policy"; + default: + snprintf(buf, len, "%d", id); + return buf; +@@ -84,6 +86,8 @@ int rtnl_rtntype_a2n(int *id, char *arg) + res = RTN_UNICAST; + else if (strcmp(arg, "throw") == 0) + res = RTN_THROW; ++ else if (strcmp(arg, "failed_policy") == 0) ++ res = RTN_FAILED_POLICY; + else { + res = strtoul(arg, &end, 0); + if (!end || end == arg || *end || res > 255) +--- a/include/uapi/linux/rtnetlink.h ++++ b/include/uapi/linux/rtnetlink.h +@@ -265,6 +265,7 @@ enum { + RTN_THROW, /* Not in this table */ + RTN_NAT, /* Translate this address */ + RTN_XRESOLVE, /* Use external resolver */ ++ RTN_FAILED_POLICY, /* Source address failed policy */ + __RTN_MAX + }; + diff --git a/iproute2/patches/190-fix-nls-rpath-link.patch b/iproute2/patches/190-fix-nls-rpath-link.patch new file mode 100644 index 000000000..545075fd8 --- /dev/null +++ b/iproute2/patches/190-fix-nls-rpath-link.patch @@ -0,0 +1,20 @@ +--- a/configure ++++ b/configure +@@ -241,7 +241,7 @@ int main(int argc, char **argv) { + } + EOF + +- $CC -o $TMPDIR/libbpf_test $TMPDIR/libbpf_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS >/dev/null 2>&1 ++ $CC -o $TMPDIR/libbpf_test $TMPDIR/libbpf_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS >/dev/null 2>&1 + local ret=$? + + rm -f $TMPDIR/libbpf_test.c $TMPDIR/libbpf_test +@@ -259,7 +259,7 @@ int main(int argc, char **argv) { + } + EOF + +- $CC -o $TMPDIR/libbpf_sec_test $TMPDIR/libbpf_sec_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS >/dev/null 2>&1 ++ $CC -o $TMPDIR/libbpf_sec_test $TMPDIR/libbpf_sec_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS >/dev/null 2>&1 + local ret=$? + + rm -f $TMPDIR/libbpf_sec_test.c $TMPDIR/libbpf_sec_test diff --git a/iproute2/patches/195-build_variant_ip_tc.patch b/iproute2/patches/195-build_variant_ip_tc.patch new file mode 100644 index 000000000..6ecf5568b --- /dev/null +++ b/iproute2/patches/195-build_variant_ip_tc.patch @@ -0,0 +1,22 @@ +--- a/ip/Makefile ++++ b/ip/Makefile +@@ -28,7 +28,7 @@ STATIC_SYM_SOURCES:=$(filter-out $(STATI + + ALLOBJ=$(IPOBJ) $(RTMONOBJ) + SCRIPTS=routel +-TARGETS=ip rtmon ++TARGETS=$(findstring ip,$(BUILD_VARIANT)) rtmon + + all: $(TARGETS) $(SCRIPTS) + +--- a/tc/Makefile ++++ b/tc/Makefile +@@ -120,7 +120,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc + $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic $< -o $@ + + +-all: tc $(TCSO) ++all: $(findstring tc,$(BUILD_VARIANT)) $(TCSO) + + tc: $(TCOBJ) $(LIBNETLINK) libtc.a + $(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@ diff --git a/iproute2/patches/200-drop_libbsd_dependency.patch b/iproute2/patches/200-drop_libbsd_dependency.patch new file mode 100644 index 000000000..38193be15 --- /dev/null +++ b/iproute2/patches/200-drop_libbsd_dependency.patch @@ -0,0 +1,19 @@ +--- a/configure ++++ b/configure +@@ -413,14 +413,8 @@ EOF + if $CC -I$INCLUDE -o $TMPDIR/strtest $TMPDIR/strtest.c >/dev/null 2>&1; then + echo "no" + else +- if ${PKG_CONFIG} libbsd --exists; then +- echo 'CFLAGS += -DHAVE_LIBBSD' "$(${PKG_CONFIG} libbsd --cflags)" >>$CONFIG +- echo 'LDLIBS +=' "$(${PKG_CONFIG} libbsd --libs)" >> $CONFIG +- echo "no" +- else +- echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG +- echo "yes" +- fi ++ echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG ++ echo "yes" + fi + rm -f $TMPDIR/strtest.c $TMPDIR/strtest + } diff --git a/iproute2/patches/300-selinux-configurable.patch b/iproute2/patches/300-selinux-configurable.patch new file mode 100644 index 000000000..9f07d3176 --- /dev/null +++ b/iproute2/patches/300-selinux-configurable.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -342,7 +342,7 @@ check_libbpf() + check_selinux() + # SELinux is a compile time option in the ss utility + { +- if ${PKG_CONFIG} libselinux --exists; then ++ if [ "${HAVE_SELINUX}" = "y" ] && ${PKG_CONFIG} libselinux --exists; then + echo "HAVE_SELINUX:=y" >>$CONFIG + echo "yes" + diff --git a/iptables-mod-fullconenat/README.md b/iptables-mod-fullconenat/README.md deleted file mode 100644 index 4d4909802..000000000 --- a/iptables-mod-fullconenat/README.md +++ /dev/null @@ -1,27 +0,0 @@ -## Netfilter and iptables extension for [FULLCONENAT](https://github.com/Chion82/netfilter-full-cone-nat) target ported to OpenWrt. - -Compile ---- -``` -# cd to OpenWrt source path -# Clone this repo -git clone -b master --single-branch https://github.com/LGA1150/openwrt-fullconenat package/fullconenat -# Select Network -> Firewall -> iptables-mod-fullconenat -make menuconfig -# Compile -make V=s -``` - -Usage ---- -You can apply [this patch](https://github.com/LGA1150/fullconenat-fw3-patch) to OpenWrt's Firewall3 (Recommended). - -Or manually add the following rules to `/etc/firewall.user` -``` -iptables -t nat -A zone_wan_prerouting -j FULLCONENAT -iptables -t nat -A zone_wan_postrouting -j FULLCONENAT -``` - -Workaround for conflicting with module `nf_conntrack_netlink` ---- -This module uses conntrack events to register a callback function. In the same netns, only one callback method can be registered, that causes conflicts with `nf_conntrack_netlink`, which also uses conntrack events. Qualcomm Shortcut FE has introduced a patch to allow multiple callbacks to be registered. To apply, put [this patch](https://github.com/coolsnowwolf/lede/blob/master/target/linux/generic/hack-4.14/952-net-conntrack-events-support-multiple-registrant.patch) into `target/linux/generic/hack-4.14`. diff --git a/iptables-mod-fullconenat/patches/000-printk.patch b/iptables-mod-fullconenat/patches/000-printk.patch deleted file mode 100644 index 4e764c5d6..000000000 --- a/iptables-mod-fullconenat/patches/000-printk.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/xt_FULLCONENAT.c b/xt_FULLCONENAT.c -index 9e52eba..8658c5f 100644 ---- a/xt_FULLCONENAT.c -+++ b/xt_FULLCONENAT.c -@@ -702,9 +702,11 @@ static struct xt_target tg_reg[] __read_mostly = { - - static int __init fullconenat_tg_init(void) - { -+ printk(KERN_INFO "xt_FULLCONENAT: RFC3489 Full Cone NAT module\n" -+ "xt_FULLCONENAT: Copyright (C) 2018 Chion Tang \n"); - wq = create_singlethread_workqueue("xt_FULLCONENAT"); - if (wq == NULL) { -- printk("xt_FULLCONENAT: warning: failed to create workqueue\n"); -+ printk(KERN_WARNING "xt_FULLCONENAT: warning: failed to create workqueue\n"); - } - - return xt_register_targets(tg_reg, ARRAY_SIZE(tg_reg)); diff --git a/libbpf/Makefile b/libbpf/Makefile deleted file mode 100644 index 862b075a3..000000000 --- a/libbpf/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=libbpf -PKG_VERSION:=556e0a0 -PKG_RELEASE:=1 - -PKG_SOURCE_URL:=https://github.com/libbpf/libbpf.git -PKG_SOURCE_VERSION:=556e0a0def956ece0476d99ccb0570ee4ecd4d23 -PKG_MAINTAINER:=Yannick Chabanois (Ycarus) - -PKG_SOURCE_PROTO:=git - -include $(INCLUDE_DIR)/package.mk - -define Package/libbpf - SECTION:=net - CATEGORY:=Network - TITLE:=libbpf - DEPENDS:=+libstdcpp +libelf1 - KCONFIG:=CONFIG_BPF_STREAM_PARSER=y -endef - -define Package/libbpf/description - libbpf -endef - -EXTRA_CPPFLAGS += -fpermissive -Wno-variadic-macros - -TARGET_CFLAGS += -DCOMPAT_NEED_REALLOCARRAY - -define Build/Configure -endef - -define Build/Compile - BUILD_SHARED=y $(MAKE) -C $(PKG_BUILD_DIR)/src \ - CC="$(TARGET_CC)" \ - CFLAGS="$(TARGET_CFLAGS)" \ - LDFLAGS="$(TARGET_LDFLAGS)" -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/src/libbpf.so $(1)/usr/lib - $(INSTALL_DIR) $(1)/usr/include/bpf - $(CP) $(PKG_BUILD_DIR)/src/*.h $(1)/usr/include/bpf -endef - -define Package/libbpf/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/src/libbpf.so $(1)/usr/lib -endef - -$(eval $(call BuildPackage,libbpf)) diff --git a/libell/Makefile b/libell/Makefile index 99ac29e1f..8b12f4b51 100644 --- a/libell/Makefile +++ b/libell/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2020 Ycarus (Yannick Chabanois) +# Copyright (C) 2020-2021 Ycarus (Yannick Chabanois) # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -8,10 +8,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ell -PKG_VERSION:=0.30 +PKG_VERSION:=0.41 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_HASH:=51cf8cc66a9d1038e41f7d619ea5660aa4476904496562b2d45ca79370ca4a5e +PKG_HASH:=4e8dba6c53cf152dbd0fd1dc3d4c7b04abf79e20a948895f85943e586870505c PKG_SOURCE_URL:=@KERNEL/linux/libs/ell PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=GPL diff --git a/libgpiod/Makefile b/libgpiod/Makefile new file mode 100644 index 000000000..57842ab78 --- /dev/null +++ b/libgpiod/Makefile @@ -0,0 +1,125 @@ +# +# Copyright (C) 2018-2019 Michael Heimpold +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libgpiod +PKG_VERSION:=2.1.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=@KERNEL/software/libs/libgpiod/ +PKG_HASH:=b21913f469d3135680d5516f00fdf9f81d5e564e19ffb690927ea7f1d7e312cb + +PKG_MAINTAINER:=Michael Heimpold +PKG_LICENSE:=LGPL-2.1-or-later +PKG_LICENSE_FILES:=COPYING + +PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 +PYTHON3_PKG_BUILD:=0 + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/python/python3-package.mk + +ifneq ($(CONFIG_PACKAGE_gpiod-tools),) +CONFIGURE_ARGS += --enable-tools +endif + +PYTHON3_PKG_SETUP_DIR:=bindings/python +TARGET_CPPFLAGS+=-I$(PKG_BUILD_DIR)/include +TARGET_LDFLAGS+=-L$(PKG_BUILD_DIR)/lib/.libs + +define Package/libgpiod + SECTION:=libs + CATEGORY:=Libraries + URL:=https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git + TITLE:=Library for interacting with Linux's GPIO character device + KCONFIG:= \ + CONFIG_GPIO_CDEV=y + DEPENDS:=@GPIO_SUPPORT +endef + +define Package/libgpiod/description + C library for interacting with the linux GPIO character device + (gpiod stands for GPIO device). +endef + +define Package/gpiod-tools + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Tools for interacting with GPIO pins + DEPENDS:=+libgpiod +endef + +define Package/gpiod-tools/description + Tools for interacting with the linux GPIO character device + (gpiod stands for GPIO device). +endef + +define Package/python3-gpiod + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Python bindings for libgpiod + URL:=https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git + DEPENDS:=+python3-light +libgpiod +endef + +define Package/python3-gpiod/description + This package contains the Python bindings for libgpiod. +endef + +define Build/Configure + $(call Build/Configure/Default) + ifneq ($(CONFIG_PACKAGE_python3-gpiod),) + $(call Py3Build/Configure) + endif +endef + +define Build/Compile + $(call Build/Compile/Default) + ifneq ($(CONFIG_PACKAGE_python3-gpiod),) + $(call Py3Build/Compile) + endif +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/gpiod.h $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpiod.{so*,a} $(1)/usr/lib/ + + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libgpiod.pc $(1)/usr/lib/pkgconfig/ + + ifneq ($(CONFIG_PACKAGE_python3-gpiod),) + $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR) + $(CP) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* $(1)$(PYTHON3_PKG_DIR) + endif +endef + +define Package/libgpiod/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpiod.so.* $(1)/usr/lib/ +endef + +define Package/gpiod-tools/install + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ +endef + +define Py3Package/python3-gpiod/install + # this empty define prevent installing tools from /usr/bin +endef + +$(eval $(call BuildPackage,libgpiod)) +$(eval $(call BuildPackage,gpiod-tools)) +$(eval $(call Py3Package,python3-gpiod)) +$(eval $(call BuildPackage,python3-gpiod)) +$(eval $(call BuildPackage,python3-gpiod-src)) diff --git a/libmbim/Makefile b/libmbim/Makefile new file mode 100644 index 000000000..5482a3cfb --- /dev/null +++ b/libmbim/Makefile @@ -0,0 +1,97 @@ +# +# Copyright (C) 2016 Velocloud Inc. +# Copyright (C) 2016 Aleksander Morgado +# +# This is free software, licensed under the GNU General Public License v2. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libmbim +PKG_VERSION:=1.31.6 +PKG_SOURCE_VERSION:=1.31.6-dev +#PKG_SOURCE_VERSION:=1866ed53c05916c66c5d52682778a6078e5221d3 +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libmbim.git +#libmPKG_MIRROR_HASH:=8fc4e2d78d6a1003bf89303d3ce779283b176d74e84a241ba8efb0d468605268 + +PKG_BUILD_FLAGS:=gc-sections + +PKG_MAINTAINER:=Nicholas Smith + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk +include $(INCLUDE_DIR)/meson.mk + +TARGET_CFLAGS += -fno-merge-all-constants -fmerge-constants + +MESON_ARGS += \ + -Dintrospection=false \ + -Dman=false \ + -Dbash_completion=false \ + -Db_lto=true + +define Package/libmbim + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:=+glib2 + TITLE:=Helper library and utils to talk to MBIM enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libmbim + LICENSE:=LGPL-2.0-or-later + LICENSE_FILES:=COPYING.LIB +endef + +define Package/libmbim/description + Helper library to talk to MBIM enabled modems. + Add mbim-utils for extra utilities. +endef + +define Package/mbim-utils + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+libmbim + TITLE:=Utilities to talk to MBIM enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libmbim + LICENSE:=GPL-2.0-or-later + LICENSE_FILES:=COPYING +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/libmbim-glib \ + $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libmbim*.so* \ + $(1)/usr/lib/ + + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/mbim-glib.pc \ + $(1)/usr/lib/pkgconfig +endef + +define Package/libmbim/install + $(INSTALL_DIR) \ + $(1)/usr/lib \ + $(1)/usr/libexec + + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libmbim*.so.* \ + $(1)/usr/lib/ + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/mbim-proxy $(1)/usr/libexec/ +endef + +define Package/mbim-utils/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mbimcli $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mbim-network $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,libmbim)) +$(eval $(call BuildPackage,mbim-utils)) diff --git a/libqmi/Config.in b/libqmi/Config.in new file mode 100644 index 000000000..7dfa7ca52 --- /dev/null +++ b/libqmi/Config.in @@ -0,0 +1,31 @@ +menu "Configuration" + depends on PACKAGE_libqmi + +config LIBQMI_WITH_MBIM_QMUX + bool "Include MBIM QMUX service support" + default y + help + Compile libqmi with QMI-over-MBIM support + +config LIBQMI_WITH_QRTR_GLIB + bool "Include QRTR support" + default y + help + Compile libqmi with QRTR support + +choice + prompt "Select QMI message collection to build" + default LIBQMI_COLLECTION_BASIC + + config LIBQMI_COLLECTION_MINIMAL + depends on !MODEMMANAGER_WITH_QMI + bool "minimal" + + config LIBQMI_COLLECTION_BASIC + bool "basic (default)" + + config LIBQMI_COLLECTION_FULL + bool "full" +endchoice + +endmenu diff --git a/libqmi/Makefile b/libqmi/Makefile new file mode 100644 index 000000000..ca7122ad5 --- /dev/null +++ b/libqmi/Makefile @@ -0,0 +1,113 @@ +# +# Copyright (C) 2016 Velocloud Inc. +# Copyright (C) 2016 Aleksander Morgado +# +# This is free software, licensed under the GNU General Public License v2. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libqmi +PKG_VERSION:=1.35.6 +PKG_SOURCE_VERSION:=1.35.6-dev +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libqmi.git +#PKG_MIRROR_HASH:=af3dc760d0c40ef8af1f8b424435daa12bff698ed45b1cc9a9e38ea62ed047f0 + +PKG_BUILD_FLAGS:=gc-sections + +PKG_MAINTAINER:=Nicholas Smith + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk +include $(INCLUDE_DIR)/meson.mk + +TARGET_CFLAGS += -fno-merge-all-constants -fmerge-constants + +define Package/libqmi/config + source "$(SOURCE)/Config.in" +endef + +define Package/libqmi + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:= \ + +glib2 \ + +LIBQMI_WITH_MBIM_QMUX:libmbim \ + +LIBQMI_WITH_QRTR_GLIB:libqrtr-glib + TITLE:=Helper library to talk to QMI enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libqmi + LICENSE:=LGPL-2.0-or-later + LICENSE_FILES:=COPYING.LIB +endef + +define Package/libqmi/description + Helper library talk to QMI enabled modems. + Add qmi-utils for extra utilities. +endef + +define Package/qmi-utils + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+libqmi + TITLE:=Utilities to talk to QMI enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libqmi + LICENSE:=GPL-2.0-or-later + LICENSE_FILES:=COPYING +endef + +define Package/libqmi-utils/description + Utils to talk to QMI enabled modems +endef + +MESON_ARGS += \ + -Dudev=false \ + -Dintrospection=false \ + -Dman=false \ + -Dbash_completion=false \ + -Db_lto=true \ + -Dmbim_qmux=$(if $(CONFIG_LIBQMI_WITH_MBIM_QMUX),true,false) \ + -Dqrtr=$(if $(CONFIG_LIBQMI_WITH_QRTR_GLIB),true,false) \ + -Dcollection=$(if $(CONFIG_LIBQMI_COLLECTION_MINIMAL),minimal\ + ,$(if $(CONFIG_LIBQMI_COLLECTION_BASIC),basic,full)) + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/libqmi-glib \ + $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libqmi*.so* \ + $(1)/usr/lib/ + + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/qmi-glib.pc \ + $(1)/usr/lib/pkgconfig +endef + +define Package/libqmi/install + $(INSTALL_DIR) \ + $(1)/usr/lib \ + $(1)/usr/libexec + + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libqmi*.so.* \ + $(1)/usr/lib/ + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/qmi-proxy $(1)/usr/libexec/ +endef + +define Package/qmi-utils/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmicli $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmi-network $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmi-firmware-update $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,libqmi)) +$(eval $(call BuildPackage,qmi-utils)) diff --git a/luci-app-dsvpn/po/fr/dsvpn.po b/luci-app-dsvpn/po/fr/dsvpn.po index b0e57ae95..448d90c08 100644 --- a/luci-app-dsvpn/po/fr/dsvpn.po +++ b/luci-app-dsvpn/po/fr/dsvpn.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-15 14:46+0000\n" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -8,9 +8,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.5.2\n" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:35 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 msgid "Client" msgstr "Client" @@ -27,7 +27,7 @@ msgstr "Activer" msgid "Grant access to DSVPN" msgstr "Accorder l'accès à DSVPN" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 msgid "Host" msgstr "Hôte" @@ -35,34 +35,34 @@ msgstr "Hôte" msgid "Instances" msgstr "Instances" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:49 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 msgid "Interface name" msgstr "Nom de l'interface" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 msgid "Key" msgstr "Clef" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:61 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 msgid "Label" msgstr "Étiquette" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:53 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 msgid "Local IP" msgstr "Adresse IP locale" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 msgid "Mode" msgstr "Mode" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 msgid "Port" msgstr "Port" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:57 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 msgid "Remote IP" msgstr "IP Distante" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:36 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 msgid "Server" msgstr "Serveur" diff --git a/luci-app-dsvpn/po/fr/dsvpn.po~ b/luci-app-dsvpn/po/fr/dsvpn.po~ new file mode 100644 index 000000000..dc421eb01 --- /dev/null +++ b/luci-app-dsvpn/po/fr/dsvpn.po~ @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:35 +msgid "Client" +msgstr "Client" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "Accorder l'accès à DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Host" +msgstr "Hôte" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:49 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Key" +msgstr "Clef" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:61 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:53 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Mode" +msgstr "Mode" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Port" +msgstr "Port" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:57 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:36 +msgid "Server" +msgstr "Serveur" diff --git a/luci-app-dsvpn/po/ru/dsvpn.po b/luci-app-dsvpn/po/ru/dsvpn.po new file mode 100644 index 000000000..a926fd1ab --- /dev/null +++ b/luci-app-dsvpn/po/ru/dsvpn.po @@ -0,0 +1,69 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 +msgid "Client" +msgstr "Клиент" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "Полный доступ к DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Host" +msgstr "Хост" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 +msgid "Key" +msgstr "Ключ" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Label" +msgstr "Метка" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 +msgid "Local IP" +msgstr "Локальный IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 +msgid "Mode" +msgstr "Режим" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Port" +msgstr "Порт" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 +msgid "Remote IP" +msgstr "Удаленный IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Server" +msgstr "Сервер" diff --git a/luci-app-dsvpn/po/templates/dsvpn.pot b/luci-app-dsvpn/po/templates/dsvpn.pot index 8f77636dc..4b5645646 100644 --- a/luci-app-dsvpn/po/templates/dsvpn.pot +++ b/luci-app-dsvpn/po/templates/dsvpn.pot @@ -1,7 +1,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:35 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 msgid "Client" msgstr "" @@ -18,7 +18,7 @@ msgstr "" msgid "Grant access to DSVPN" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 msgid "Host" msgstr "" @@ -26,34 +26,34 @@ msgstr "" msgid "Instances" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:49 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 msgid "Interface name" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 msgid "Key" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:61 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 msgid "Label" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:53 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 msgid "Local IP" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 msgid "Mode" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 msgid "Port" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:57 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 msgid "Remote IP" msgstr "" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:36 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 msgid "Server" msgstr "" diff --git a/luci-app-dsvpn/po/zh_Hans/dsvpn.po b/luci-app-dsvpn/po/zh_Hans/dsvpn.po index 177492257..e0379098d 100644 --- a/luci-app-dsvpn/po/zh_Hans/dsvpn.po +++ b/luci-app-dsvpn/po/zh_Hans/dsvpn.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:03+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:35 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 msgid "Client" msgstr "客户端" @@ -21,13 +21,13 @@ msgstr "DSVPN" #: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 msgid "Enabled" -msgstr "开启" +msgstr "启用" #: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 msgid "Grant access to DSVPN" msgstr "授予对DSVPN的访问权限" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 msgid "Host" msgstr "主机" @@ -35,34 +35,34 @@ msgstr "主机" msgid "Instances" msgstr "实例" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:49 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 msgid "Interface name" msgstr "接口名称" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 msgid "Key" msgstr "秘钥" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:61 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 msgid "Label" msgstr "标签" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:53 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 msgid "Local IP" msgstr "本地IP" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 msgid "Mode" msgstr "模式" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 msgid "Port" msgstr "端口" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:57 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 msgid "Remote IP" msgstr "远程IP" -#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:36 +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 msgid "Server" msgstr "服务器" diff --git a/luci-app-dsvpn/po/zh_Hans/dsvpn.po~ b/luci-app-dsvpn/po/zh_Hans/dsvpn.po~ new file mode 100644 index 000000000..177492257 --- /dev/null +++ b/luci-app-dsvpn/po/zh_Hans/dsvpn.po~ @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-04 16:03+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:35 +msgid "Client" +msgstr "客户端" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "开启" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "授予对DSVPN的访问权限" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Host" +msgstr "主机" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:49 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Key" +msgstr "秘钥" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:61 +msgid "Label" +msgstr "标签" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:53 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Mode" +msgstr "模式" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Port" +msgstr "端口" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:57 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:36 +msgid "Server" +msgstr "服务器" diff --git a/luci-app-firewall/Makefile b/luci-app-firewall/Makefile index 9d308b0e1..793e06468 100644 --- a/luci-app-firewall/Makefile +++ b/luci-app-firewall/Makefile @@ -6,10 +6,11 @@ include $(TOPDIR)/rules.mk -LUCI_TITLE:=Firewall and Portforwarding application -LUCI_DEPENDS:=+firewall +LUCI_TITLE:=Firewall and port forwarding application +LUCI_DEPENDS:=+luci-base +uci-firewall PKG_LICENSE:=Apache-2.0 +PKG_MAINTAINER:=Jo-Philipp Wich include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js b/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js index e85b6bc6e..f9d7dc611 100644 --- a/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js +++ b/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js @@ -6,6 +6,7 @@ 'require form'; 'require network'; 'require firewall'; +'require validation'; 'require tools.prng as random'; var protocols = [ @@ -392,12 +393,25 @@ return baseclass.extend({ }, transformHostHints: function(family, hosts) { - var choice_values = [], choice_labels = {}; + var choice_values = [], + choice_labels = {}, + ip6addrs = {}, + ipaddrs = {}; + + for (var mac in hosts) { + L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4).forEach(function(ip) { + ipaddrs[ip] = mac; + }); + + L.toArray(hosts[mac].ip6addrs || hosts[mac].ipv6).forEach(function(ip) { + ip6addrs[ip] = mac; + }); + } if (!family || family == 'ipv4') { - L.sortedKeys(hosts, 'ipv4', 'addr').forEach(function(mac) { - var val = hosts[mac].ipv4, - txt = hosts[mac].name || mac; + L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ip) { + var val = ip, + txt = hosts[ipaddrs[ip]].name || ipaddrs[ip]; choice_values.push(val); choice_labels[val] = E([], [ val, ' (', E('strong', {}, [txt]), ')' ]); @@ -405,9 +419,9 @@ return baseclass.extend({ } if (!family || family == 'ipv6') { - L.sortedKeys(hosts, 'ipv6', 'addr').forEach(function(mac) { - var val = hosts[mac].ipv6, - txt = hosts[mac].name || mac; + L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ip) { + var val = ip, + txt = hosts[ip6addrs[ip]].name || ip6addrs[ip]; choice_values.push(val); choice_labels[val] = E([], [ val, ' (', E('strong', {}, [txt]), ')' ]); @@ -425,11 +439,27 @@ return baseclass.extend({ opt.addChoices(choices[0], choices[1]); }, + CBIDynamicMultiValueList: form.DynamicList.extend({ + renderWidget: function(/* ... */) { + var dl = form.DynamicList.prototype.renderWidget.apply(this, arguments), + inst = dom.findClassInstance(dl); + + inst.addItem = function(dl, value, text, flash) { + var values = L.toArray(value); + for (var i = 0; i < values.length; i++) + ui.DynamicList.prototype.addItem.call(this, dl, values[i], null, true); + }; + + return dl; + } + }), + addIPOption: function(s, tab, name, label, description, family, hosts, multiple) { - var o = s.taboption(tab, multiple ? form.DynamicList : form.Value, name, label, description); + var o = s.taboption(tab, multiple ? this.CBIDynamicMultiValueList : form.Value, name, label, description); + var fw4 = L.hasSystemFeature('firewall4'); o.modalonly = true; - o.datatype = 'list(neg(ipmask))'; + o.datatype = (fw4 && validation.types.iprange) ? 'list(neg(or(ipmask("true"),iprange)))' : 'list(neg(ipmask("true")))'; o.placeholder = multiple ? _('-- add IP --') : _('any'); if (family != null) { @@ -449,18 +479,20 @@ return baseclass.extend({ addLocalIPOption: function(s, tab, name, label, description, devices) { var o = s.taboption(tab, form.Value, name, label, description); + var fw4 = L.hasSystemFeature('firewall4'); o.modalonly = true; - o.datatype = 'ip4addr("nomask")'; + o.datatype = !fw4?'ip4addr("nomask")':'ipaddr("nomask")'; o.placeholder = _('any'); L.sortedKeys(devices, 'name').forEach(function(dev) { var ip4addrs = devices[dev].ipaddrs; + var ip6addrs = devices[dev].ip6addrs; - if (!L.isObject(devices[dev].flags) || !Array.isArray(ip4addrs) || devices[dev].flags.loopback) + if (!L.isObject(devices[dev].flags) || devices[dev].flags.loopback) return; - for (var i = 0; i < ip4addrs.length; i++) { + for (var i = 0; Array.isArray(ip4addrs) && i < ip4addrs.length; i++) { if (!L.isObject(ip4addrs[i]) || !ip4addrs[i].address) continue; @@ -468,13 +500,21 @@ return baseclass.extend({ ip4addrs[i].address, ' (', E('strong', {}, [dev]), ')' ])); } + for (var i = 0; fw4 && Array.isArray(ip6addrs) && i < ip6addrs.length; i++) { + if (!L.isObject(ip6addrs[i]) || !ip6addrs[i].address) + continue; + + o.value(ip6addrs[i].address, E([], [ + ip6addrs[i].address, ' (', E('strong', {}, [dev]), ')' + ])); + } }); return o; }, addMACOption: function(s, tab, name, label, description, hosts) { - var o = s.taboption(tab, form.DynamicList, name, label, description); + var o = s.taboption(tab, this.CBIDynamicMultiValueList, name, label, description); o.modalonly = true; o.datatype = 'list(macaddr)'; @@ -482,7 +522,10 @@ return baseclass.extend({ L.sortedKeys(hosts).forEach(function(mac) { o.value(mac, E([], [ mac, ' (', E('strong', {}, [ - hosts[mac].name || hosts[mac].ipv4 || hosts[mac].ipv6 || '?' + hosts[mac].name || + L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4)[0] || + L.toArray(hosts[mac].ip6addrs || hosts[mac].ipv6)[0] || + '?' ]), ')' ])); }); @@ -522,6 +565,9 @@ return baseclass.extend({ } }, this)); + if (cfgvalue == '*' || cfgvalue == 'any' || cfgvalue == 'all') + cfgvalue = 'all'; + return cfgvalue; }, @@ -537,6 +583,7 @@ return baseclass.extend({ display_items: 10, dropdown_items: -1, create: true, + disabled: (this.readonly != null) ? this.readonly : this.map.readonly, validate: function(value) { var v = L.toArray(value); @@ -555,8 +602,7 @@ return baseclass.extend({ }); widget.createChoiceElement = function(sb, value) { - var m = value.match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/), - p = lookupProto(lookupProto(m ? +m[1] : value)[0]); + var p = lookupProto(value); return ui.Dropdown.prototype.createChoiceElement.call(this, sb, p[2], p[1]); }; @@ -566,9 +612,11 @@ return baseclass.extend({ var m = value.match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/), p = lookupProto(m ? +m[1] : value); - return (p[0] > -1) ? p[2] : value; + return (p[0] > -1) ? p[2] : p[1]; }); + values.sort(); + return ui.Dropdown.prototype.createItems.call(this, sb, values.join(' ')); }; diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js index ca870552a..1997a720c 100644 --- a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js @@ -24,7 +24,7 @@ return view.extend({ return E([ E('h2', _('Firewall - Custom Rules')), E('p', {}, _('Custom rules allow you to execute arbitrary iptables commands which are not otherwise covered by the firewall framework. The commands are executed after each firewall restart, right after the default ruleset has been loaded.')), - E('p', {}, E('textarea', { 'style': 'width:100%', 'rows': 10 }, [ fwuser != null ? fwuser : '' ])) + E('p', {}, E('textarea', { 'style': 'width:100%', 'rows': 25 }, [ fwuser != null ? fwuser : '' ])) ]); }, diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js index 6c0c7ae73..5fc3245f5 100644 --- a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js @@ -9,6 +9,8 @@ 'require tools.widgets as widgets'; function rule_proto_txt(s, ctHelpers) { + var family = (uci.get('firewall', s, 'family') || '').toLowerCase().replace(/^(?:all|\*)$/, 'any'); + var dip = uci.get('firewall', s, 'dest_ip') || ''; var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { return (p != '*' && p != 'any' && p != 'all'); }).map(function(p) { @@ -20,7 +22,7 @@ function rule_proto_txt(s, ctHelpers) { }; }); - m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); + var m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); var h = m ? { val: m[0].toUpperCase(), inv: m[1], @@ -35,7 +37,9 @@ function rule_proto_txt(s, ctHelpers) { mask: m[3] ? '0x%02X'.format(+m[3]) : null } : null; - return fwtool.fmt(_('Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}'), { + return fwtool.fmt(_('Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}'), { + ipv4: ((!family && dip.indexOf(':') == -1) || family == 'any' || (!family && !dip) || family == 'ipv4'), + ipv6: ((!family && dip.indexOf(':') != -1) || family == 'any' || family == 'ipv6'), proto: proto, helper: h, mark: f @@ -46,7 +50,7 @@ function rule_src_txt(s, hosts) { var z = uci.get('firewall', s, 'src'); return fwtool.fmt(_('From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}'), { - src: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + src: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), src_mac: fwtool.map_invert(uci.get('firewall', s, 'src_mac'), 'toUpperCase').map(function(v) { return Object.assign(v, { hint: hosts[v.val] }) }), src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')) @@ -55,7 +59,7 @@ function rule_src_txt(s, hosts) { function rule_dest_txt(s) { return fwtool.fmt(_('To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { - dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName(null) }, [E('em', _('this device'))]), + dest: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(null) }, [E('em', _('this device'))]), dest_ip: fwtool.map_invert(uci.get('firewall', s, 'src_dip'), 'toLowerCase'), dest_port: fwtool.map_invert(uci.get('firewall', s, 'src_dport')) }); @@ -79,12 +83,30 @@ function rule_target_txt(s) { var z = uci.get('firewall', s, 'dest'); return fwtool.fmt(_('Forward to %{dest}%{dest_ip? IP %{dest_ip}}%{dest_port? port %{dest_port}}'), { - dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), dest_ip: (uci.get('firewall', s, 'dest_ip') || '').toLowerCase(), dest_port: uci.get('firewall', s, 'dest_port') }); } +function validate_opt_family(m, section_id, opt) { + var dopt = m.section.getOption('dest_ip'), + fmopt = m.section.getOption('family'); + + if (!dopt.isValid(section_id) && opt != 'dest_ip') + return true; + if (!fmopt.isValid(section_id) && opt != 'family') + return true; + + var dip = dopt.formvalue(section_id) || '', + fm = fmopt.formvalue(section_id) || ''; + + if (fm == '' || (fm == 'any' && dip == '') || (fm == 'ipv6' && (dip.indexOf(':') != -1 || dip == '')) || (fm == 'ipv4' && dip.indexOf(':') == -1)) + return true; + + return _('Address family, Internal IP address must match'); +} + return view.extend({ callHostHints: rpc.declare({ object: 'luci-rpc', @@ -125,6 +147,7 @@ return view.extend({ ctHelpers = data[1], devs = data[2], m, s, o; + var fw4 = L.hasSystemFeature('firewall4'); m = new form.Map('firewall', _('Firewall - Port Forwards'), _('Port forwarding allows remote computers on the Internet to connect to a specific computer or service within the private LAN.')); @@ -133,6 +156,7 @@ return view.extend({ s.addremove = true; s.anonymous = true; s.sortable = true; + s.cloneable = true; s.tab('general', _('General Settings')); s.tab('advanced', _('Advanced Settings')); @@ -149,9 +173,10 @@ return view.extend({ var config_name = this.uciconfig || this.map.config, section_id = uci.add(config_name, this.sectiontype); + uci.set(config_name, section_id, 'dest', 'lan'); uci.set(config_name, section_id, 'target', 'DNAT'); - this.addedSection = section_id; + m.addedSection = section_id; this.renderMoreOptionsModal(section_id); }; @@ -159,6 +184,32 @@ return view.extend({ o.placeholder = _('Unnamed forward'); o.modalonly = true; + if (fw4) { + o = s.taboption('general', form.ListValue, 'family', _('Restrict to address family')); + o.modalonly = true; + o.rmempty = true; + o.value('any', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.value('', _('automatic')); // infer from zone or used IP addresses + o.cfgvalue = function(section_id) { + var val = this.map.data.get(this.map.config, section_id, 'family'); + + if (!val) + return ''; + else if (val == 'any' || val == 'all' || val == '*') + return 'any'; + else if (val == 'inet' || String(val).indexOf('4') != -1) + return 'ipv4'; + else if (String(val).indexOf('6') != -1) + return 'ipv6'; + }; + o.validate = function(section_id, value) { + fwtool.updateHostHints(this.map, section_id, 'dest_ip', value, hosts); + return !fw4?true:validate_opt_family(this, section_id, 'family'); + }; + } + o = s.option(form.DummyValue, '_match', _('Match')); o.modalonly = false; o.textvalue = function(s) { @@ -193,15 +244,23 @@ return view.extend({ o.nocreate = true; o.default = 'wan'; + o = s.taboption('advanced', form.Value, 'ipset', _('Use ipset')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + o.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + o.modalonly = true; + o.rmempty = true; + o = fwtool.addMACOption(s, 'advanced', 'src_mac', _('Source MAC address'), _('Only match incoming traffic from these MACs.'), hosts); o.rmempty = true; o.datatype = 'list(neg(macaddr))'; o = fwtool.addIPOption(s, 'advanced', 'src_ip', _('Source IP address'), - _('Only match incoming traffic from this IP or range.'), 'ipv4', hosts); + _('Only match incoming traffic from this IP or range.'), !fw4?'ipv4':'', hosts); o.rmempty = true; - o.datatype = 'neg(ipmask4)'; + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; o = s.taboption('advanced', form.Value, 'src_port', _('Source port'), _('Only match incoming traffic originating from the given source port or port range on the client host')); @@ -214,7 +273,7 @@ return view.extend({ o = fwtool.addLocalIPOption(s, 'advanced', 'src_dip', _('External IP address'), _('Only match incoming traffic directed at the given IP address.'), devs); - o.datatype = 'neg(ipmask4)'; + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; o.rmempty = true; o = s.taboption('general', form.Value, 'src_dport', _('External port'), @@ -229,12 +288,11 @@ return view.extend({ o.modalonly = true; o.rmempty = true; o.nocreate = true; - o.default = 'lan'; o = fwtool.addIPOption(s, 'general', 'dest_ip', _('Internal IP address'), - _('Redirect matched incoming traffic to the specified internal host'), 'ipv4', hosts); + _('Redirect matched incoming traffic to the specified internal host'), !fw4?'ipv4':'', hosts); o.rmempty = true; - o.datatype = 'ipmask4'; + o.datatype = !fw4?'ipmask4':'ipmask'; o = s.taboption('general', form.Value, 'dest_port', _('Internal port'), _('Redirect matched incoming traffic to the given port on the internal host')); @@ -259,6 +317,12 @@ return view.extend({ uci.set('firewall', section_id, 'reflection_src', (value != 'internal') ? value : null); }; + o = s.taboption('advanced', widgets.ZoneSelect, 'reflection_zone', _('Reflection zones'), _('Zones from which reflection rules shall be created. If unset, only the destination zone is used.')); + o.nocreate = true; + o.multiple = true; + o.modalonly = true; + o.depends('reflection', '1'); + o = s.taboption('advanced', form.Value, 'helper', _('Match helper'), _('Match traffic using the specified connection tracking helper.')); o.modalonly = true; o.placeholder = _('any'); @@ -281,16 +345,16 @@ return view.extend({ fwtool.addLimitOption(s); fwtool.addLimitBurstOption(s); - o = s.taboption('advanced', form.Flag, 'v2ray', _('Use V2Ray'), - _('Forwards ports from server using V2Ray proxy (if enabled) instead of VPN')); + o = s.taboption('advanced', form.Flag, 'v2ray', _('Use V2Ray/XRay'), + _('Forward a port (not a range) from server using V2Ray/XRay proxy (if enabled) instead of VPN')); o.modalonly = true; - o.editable = true; - o.depends({ src: 'vpn', '!contains': true }); - o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), - _('Passes additional arguments to iptables. Use with care!')); - o.modalonly = true; - o.rmempty = true; + if (!L.hasSystemFeature('firewall4')) { + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + o.rmempty = true; + } return m.render(); } diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js new file mode 100644 index 000000000..0b3a0db1f --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js @@ -0,0 +1,222 @@ +'use strict'; +'require view'; +'require uci'; +'require form'; +'require firewall'; +'require tools.firewall as fwtool'; + + +return view.extend({ + + load: function() { + return Promise.all([ + uci.load('firewall') + ]); + }, + + render: function(data) { + let m, s, o; + + m = new form.Map('firewall', _('Firewall - IP sets'), + _('firewall4 supports referencing and creating IP sets to simplify matching of large address lists without the need to create one rule per item to match. Port ranges in ipsets are unsupported by firewall4.
')); + + var have_fw4 = L.hasSystemFeature('firewall4'); + + if (have_fw4) { + s = m.section(form.NamedSection, 'fwver', 'fwver', '', _('Your device runs firewall4.')); + } else { + s = m.section(form.NamedSection, 'fwver', 'fwver', '', _('Your device does not run firewall4.')); + } + + + s = m.section(form.GridSection, 'ipset', _('IP Sets')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + s.cloneable = true; + s.nodescriptions = true; + s.filter = function(section_id) { + return (section_id.startsWith('bypass') == false && section_id.startsWith('omr_dst') == false && section_id.startsWith('omr_dscp') == false); + }; + + + /* refer to: https://ipset.netfilter.org/ipset.man.html */ + if (have_fw4) { + o = s.option(form.Value, 'name', _('Name')); + o.optional = false; + o.rmempty = false; + o.validate = function (section_id, value) { + if (!/^[a-zA-Z_.][a-zA-Z0-9\/_.-]*$/.test(value)) + return _('Invalid set name'); + + return true; + }; + } else { + o = s.option(form.Value, 'name', _('Name')); + o.depends({ external: '' }); + /* Default: (none) if external is unset + value of external if external is set */ + } + o.placeholder = _('Unnamed set'); + + + /* comment requires https://git.openwrt.org/?p=project/firewall4.git;a=commitdiff;h=39e8c70957c795bf0c12f04299170ae86c6efdf8 */ + o = s.option(form.Value, 'comment', _('Comment')); + o.placeholder = _('Comment'); + o.modalonly = true; + o.rmempty = true; + + + o = s.option(form.ListValue, 'family', _('Family')); + o.value('ipv4', _('IPv4')); + o.value('ipv6', _('IPv6')); + o.default = _('ipv4'); + + + /* Direction src, dst; (Data)Types: ip, port, mac, net or set + Tuples: direction_datatype e.g. src_port, dest_net */ + o = s.option(form.DynamicList, 'match', _('Packet Field Match'), + _('Packet fields to match upon.
' + + 'Syntax: direction_datatype. e.g.: src_port, dest_net.
' + + 'Directions: src, dst. Datatypes: ip, port, mac, net, set.
' + + 'Direction prefixes are optional.
' + + '*Note: datatype set is unsupported in fw4.')); + o.value('ip', _('ip: IP addr')); + o.value('port', _('port: Port')); + o.value('mac', _('mac: MAC addr')); + o.value('net', _('net: (sub)net')); + if (!have_fw4) + o.value('set', _('set: ipset*')); + o.value('src_ip', _('src_ip: Source IP')); + o.value('src_port', _('src_port: Source Port')); + o.value('src_mac', _('src_mac: Source MAC addr')); + o.value('src_net', _('src_net: Source (sub)net')); + if (!have_fw4) + o.value('src_set', _('src_Set: Source ipset*')); // fw4 unsupported + o.value('dest_ip', _('dest_ip: Destination IP')); + o.value('dest_port', _('dest_port: Destination Port')); + o.value('dest_mac', _('dest_mac: Destination MAC addr')); + o.value('dest_net', _('dest_net: Destination (sub)net')); + if (!have_fw4) + o.value('dest_set', _('dest_set: Destination ipset*')); // fw4 unsupported + o.optional = false; + o.rmempty = false; + + + // TODO: if/when firewall5 arrives, this 'else' check must change. + if (have_fw4) { + + //we have fw4 + o = s.option(form.DynamicList, 'entry', _('IPs/Networks/MACs'), + _('macaddr|ip[/cidr]
')); + o.datatype = 'or(ipaddr,macaddr)'; + o.rmempty = true; + + + o = s.option(form.Value, 'maxelem', _('Max Entries'), + _('up to 65536 entries.')); + o.datatype = 'port'; //covers 16 bit size + o.modalonly = true; + o.rmempty = true; + + } else { + // this else section is intended to handle firewall3 + + o = s.option(form.Value, 'external', _('Refer To External Set')); + /* Todo: loop to fill o.values with all other ipset names except itself */ + o.rmempty = true; + o.optional = true; + + + /* 'storage' depends on fw3. It must be removed for fw4 */ + //aka 'method' in netfilter terminology. + o = s.option(form.ListValue, 'storage', _('Storage Method')); + o.value('bitmap', _('bitmap')); //ipv4 only + o.value('hash', _('hash')); + o.value('list', _('list')); + o.validate = function(section_id, value) { + var family = this.section.formvalue(section_id, 'family'); + if (value.match(/bitmap/) && !family.match(/ipv4/)) + return _('bitmap is ipv4 only'); + return true; + } + + /* this iprange differs from netfilters range fromip-toip|ip/cidr: + uci enforces a datatype = cidr in order to be able to enter + an IP for all storage/data types. */ + o = s.option(form.Value, 'iprange', _('IP (range)'), + _('ip[/cidr]
'+ + 'For use with Match datatypes: *_ip.')); + o.datatype = 'ipaddr'; + o.depends({family: 'ipv4', storage: 'bitmap', match: /_ip|_mac/ }); + o.depends({storage: 'hash', match: /_ip/ }); + + + o = s.option(form.DynamicList, 'entry', _('IPs/Networks'), + _('ip[/cidr]
')); + o.datatype = 'or(ipaddr,macaddr)'; + o.depends({storage: 'hash', match: /_ip|_net|_mac/ }); + + + o = s.option(form.Value, 'portrange', _('Port range'), + _('fromport-toport')); + o.datatype = 'neg(portrange)'; + o.depends({family: 'ipv4', storage: 'bitmap', match: /_port/ }); + o.depends({family: 'ipv4', storage: 'hash', match: /_port/ }); + o.depends({family: 'ipv6', storage: 'hash', match: /_port/ }); + + + o = s.option(form.Value, 'netmask', _('Netmask')); + o.datatype = 'or(ip4prefix,ip6prefix)'; + o.depends({family: 'ipv4', storage: 'bitmap', match: /_ip/ }); + o.depends({storage: 'hash', match: /_ip/}); + + + o = s.option(form.Value, 'maxelem', _('Max Length'), + _('up to 65536 entries.')); + o.datatype = 'port'; //covers 16 bit size + o.depends('storage', 'hash'); + o.depends('storage', 'list'); + o.modalonly = true; + + + o = s.option(form.Value, 'hashsize', _('Initial Hash Size')); + o.depends('storage', 'hash'); + o.placeholder = _('1024'); + o.modalonly = true; + + } + + o = s.option(form.FileUpload, 'loadfile', _('Include File'), + _('Path to file of CIDRs, subnets, host IPs, etc.
')); + o.root_directory = '/etc/luci-uploads'; + o.enable_delete = true; + o.enable_upload = true; + o.datatype = 'file'; + o.rmempty = true; + + + o = s.option(form.Value, 'timeout', _('Timeout'), + _('Unit: seconds. Default 0 means the entry is added permanently to the set.
' + + 'Max: 2147483 seconds.')); + o.placeholder = _('0'); + o.modalonly = true; + o.rmempty = true; + + + o = s.option(form.Flag, 'counters', _('Counters'), + _('Enables packet and byte count tracking for the set.')); + o.modalonly = true; + o.rmempty = true; + o.default = false; + + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = true; + o.editable = true; + o.modalonly = false; + + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js index bacbbd704..8103aa66f 100644 --- a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js @@ -22,7 +22,7 @@ function rule_proto_txt(s, ctHelpers) { }; }); - m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); + var m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); var h = m ? { val: m[0].toUpperCase(), inv: m[1], @@ -62,7 +62,7 @@ function rule_src_txt(s, hosts) { d = (uci.get('firewall', s, 'direction') == 'in') ? uci.get('firewall', s, 'device') : null; return fwtool.fmt(_('From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}'), { - src: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + src: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), src_mac: fwtool.map_invert(uci.get('firewall', s, 'src_mac'), 'toUpperCase').map(function(v) { return Object.assign(v, { hint: hosts[v.val] }) }), src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')), @@ -75,7 +75,7 @@ function rule_dest_txt(s) { d = (uci.get('firewall', s, 'direction') == 'out') ? uci.get('firewall', s, 'device') : null; return fwtool.fmt(_('To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { - dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + dest: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), dest_ip: fwtool.map_invert(uci.get('firewall', s, 'dest_ip'), 'toLowerCase'), dest_port: fwtool.map_invert(uci.get('firewall', s, 'dest_port')), dest_device: d @@ -171,19 +171,21 @@ return view.extend({ m, s, o; m = new form.Map('firewall', _('Firewall - Traffic Rules'), - _('Traffic rules define policies for packets traveling between different zones, for example to reject traffic between certain hosts or to open WAN ports on the router.')); + _('Traffic rules define policies for packets travelling between different zones, for example to reject traffic between certain hosts or to open WAN ports on the router.')); s = m.section(form.GridSection, 'rule', _('Traffic Rules')); s.addremove = true; s.anonymous = true; s.sortable = true; + s.cloneable = true; s.tab('general', _('General Settings')); s.tab('advanced', _('Advanced Settings')); s.tab('timed', _('Time Restrictions')); s.filter = function(section_id) { - return (uci.get('firewall', section_id, 'target') != 'SNAT'); + //return (uci.get('firewall', section_id, 'target') != 'SNAT'); + return (uci.get('firewall', section_id, 'target') != 'SNAT' && section_id.startsWith('omr_dst') == false && section_id.startsWith('omr_dscp') == false); }; s.sectiontitle = function(section_id) { @@ -193,13 +195,8 @@ return view.extend({ s.handleAdd = function(ev) { var config_name = this.uciconfig || this.map.config, section_id = uci.add(config_name, this.sectiontype), - opt1, opt2; - - for (var i = 0; i < this.children.length; i++) - if (this.children[i].option == 'src') - opt1 = this.children[i]; - else if (this.children[i].option == 'dest') - opt2 = this.children[i]; + opt1 = this.getOption('src'), + opt2 = this.getOption('dest'); opt1.default = 'wan'; opt2.default = 'lan'; @@ -236,7 +233,19 @@ return view.extend({ o.modalonly = false; o.default = o.enabled; o.editable = true; + o.tooltip = function(section_id) { + var weekdays = uci.get('firewall', section_id, 'weekdays'); + var monthdays = uci.get('firewall', section_id, 'monthdays'); + var start_time = uci.get('firewall', section_id, 'start_time'); + var stop_time = uci.get('firewall', section_id, 'stop_time'); + var start_date = uci.get('firewall', section_id, 'start_date'); + var stop_date = uci.get('firewall', section_id, 'stop_date'); + if (weekdays || monthdays || start_time || stop_time || start_date || stop_date ) + return _('Time restrictions are enabled for this rule'); + + return null; + }; o = s.taboption('advanced', form.ListValue, 'direction', _('Match device')); o.modalonly = true; @@ -287,27 +296,52 @@ return view.extend({ o.multiple = true; o.custom = true; o.cast = 'table'; - o.placeholder = _('any'); - o.value('', 'any'); + o.placeholder = _('any/all'); o.value('address-mask-reply'); o.value('address-mask-request'); + o.value('address-unreachable'); /* icmpv6 1:3 */ + o.value('bad-header'); /* icmpv6 4:0 */ + o.value('certification-path-solicitation-message'); /* icmpv6 148 */ + o.value('certification-path-advertisement-message'); /* icmpv6 149 */ o.value('communication-prohibited'); o.value('destination-unreachable'); + o.value('duplicate-address-request'); /* icmpv6 157 */ + o.value('duplicate-address-confirmation'); /* icmpv6 158 */ o.value('echo-reply'); o.value('echo-request'); + o.value('extended-echo-request'); /* icmpv6 160 */ + o.value('extended-echo-reply'); /* icmpv6 161 */ + o.value('fmipv6-message'); /* icmpv6 154 */ o.value('fragmentation-needed'); + o.value('home-agent-address-discovery-reply-message'); /* icmpv6 145 */ + o.value('home-agent-address-discovery-request-message'); /* icmpv6 144 */ o.value('host-precedence-violation'); o.value('host-prohibited'); o.value('host-redirect'); o.value('host-unknown'); o.value('host-unreachable'); + o.value('ilnpv6-locator-update-message'); /* icmpv6 156 */ + o.value('inverse-neighbour-discovery-advertisement-message'); /* icmpv6 142 */ + o.value('inverse-neighbour-discovery-solicitation-message'); /* icmpv6 141 */ o.value('ip-header-bad'); + o.value('mobile-prefix-advertisement'); /* icmpv6 147 */ + o.value('mobile-prefix-solicitation'); /* icmpv6 146 */ + o.value('mpl-control-message'); /* icmpv6 159 */ + o.value('multicast-listener-query'); /* icmpv6 130 */ + o.value('multicast-listener-report'); /* icmpv6 131 */ + o.value('multicast-listener-done'); /* icmpv6 132 */ + o.value('multicast-router-advertisement'); /* icmpv6 151 */ + o.value('multicast-router-solicitation'); /* icmpv6 152 */ + o.value('multicast-router-termination'); /* icmpv6 153 */ o.value('neighbour-advertisement'); o.value('neighbour-solicitation'); o.value('network-prohibited'); o.value('network-redirect'); o.value('network-unknown'); o.value('network-unreachable'); + o.value('no-route'); /* icmpv6 1:0 */ + o.value('node-info-query'); /* icmpv6 139 */ + o.value('node-info-response'); /* icmpv6 140 */ o.value('packet-too-big'); o.value('parameter-problem'); o.value('port-unreachable'); @@ -316,7 +350,9 @@ return view.extend({ o.value('redirect'); o.value('required-option-missing'); o.value('router-advertisement'); + o.value('router-renumbering'); /* icmpv6 138 */ o.value('router-solicitation'); + o.value('rpl-control-message'); /* icmpv6 155 */ o.value('source-quench'); o.value('source-route-failed'); o.value('time-exceeded'); @@ -328,6 +364,9 @@ return view.extend({ o.value('TOS-network-unreachable'); o.value('ttl-zero-during-reassembly'); o.value('ttl-zero-during-transit'); + o.value('v2-multicast-listener-report'); /* icmpv6 143 */ + o.value('unknown-header-type'); /* icmpv6 4:1 */ + o.value('unknown-option'); /* icmpv6 4:2 */ o.depends({ proto: 'icmp', '!contains': true }); o.depends({ proto: 'icmpv6', '!contains': true }); @@ -337,6 +376,14 @@ return view.extend({ o.allowany = true; o.allowlocal = 'src'; + o = s.taboption('advanced', form.Value, 'ipset', _('Use ipset')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + o.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + o.modalonly = true; + o.rmempty = true; + fwtool.addMACOption(s, 'advanced', 'src_mac', _('Source MAC address'), null, hosts); fwtool.addIPOption(s, 'general', 'src_ip', _('Source address'), null, '', hosts, true); @@ -420,9 +467,11 @@ return view.extend({ fwtool.addLimitOption(s); fwtool.addLimitBurstOption(s); - o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), - _('Passes additional arguments to iptables. Use with care!')); - o.modalonly = true; + if (!L.hasSystemFeature('firewall4')) { + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + } o = s.taboption('timed', form.MultiValue, 'weekdays', _('Week Days')); o.modalonly = true; @@ -451,11 +500,11 @@ return view.extend({ for (var i = 1; i <= 31; i++) o.value(i); - o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh.mm.ss)')); + o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh:mm:ss)')); o.modalonly = true; o.datatype = 'timehhmmss'; - o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh.mm.ss)')); + o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh:mm:ss)')); o.modalonly = true; o.datatype = 'timehhmmss'; diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js index 859dba3e8..a700475e4 100644 --- a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js @@ -9,6 +9,10 @@ 'require tools.widgets as widgets'; function rule_proto_txt(s) { + var family = (uci.get('firewall', s, 'family') || '').toLowerCase().replace(/^(?:all|\*)$/, 'any'); + var sip = uci.get('firewall', s, 'src_ip') || ''; + var dip = uci.get('firewall', s, 'dest_ip') || ''; + var rwip = uci.get('firewall', s, 'snat_ip') || ''; var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { return (p != '*' && p != 'any' && p != 'all'); }).map(function(p) { @@ -19,7 +23,7 @@ function rule_proto_txt(s) { }; }); - m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + var m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); var f = m ? { val: m[0].toUpperCase().replace(/X/g, 'x'), inv: m[1], @@ -27,7 +31,9 @@ function rule_proto_txt(s) { mask: m[3] ? '0x%02X'.format(+m[3]) : null } : null; - return fwtool.fmt(_('Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}'), { + return fwtool.fmt(_('Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}'), { + ipv4: (family == 'ipv4' || family == 'any' || (!family && sip.indexOf(':') == -1 && dip.indexOf(':') == -1 && rwip.indexOf(':') == -1)), + ipv6: (family == 'ipv6' || family == 'any' || (!family && (sip.indexOf(':') != -1 || dip.indexOf(':') != -1 || rwip.indexOf(':') != -1))), proto: proto, mark: f }); @@ -37,7 +43,7 @@ function rule_src_txt(s, hosts) { var z = uci.get('firewall', s, 'src'); return fwtool.fmt(_('From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}'), { - src: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName(null) }, [E('em', _('any zone'))]), + src: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(null) }, [E('em', _('any zone'))]), src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')) }); @@ -47,7 +53,7 @@ function rule_dest_txt(s) { var z = uci.get('firewall', s, 'src'); return fwtool.fmt(_('To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { - dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z || E('em', _('this device')))]), + dest: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), dest_ip: fwtool.map_invert(uci.get('firewall', s, 'dest_ip'), 'toLowerCase'), dest_port: fwtool.map_invert(uci.get('firewall', s, 'dest_port')), dest_device: uci.get('firewall', s, 'device') @@ -91,6 +97,44 @@ function rule_target_txt(s) { } } +function validate_opt_family(m, section_id, opt) { + var sopt = m.section.getOption('src_ip'), + dopt = m.section.getOption('dest_ip'), + rwopt = m.section.getOption('snat_ip'), + fmopt = m.section.getOption('family'), + tgopt = m.section.getOption('target'); + + if (!sopt.isValid(section_id) && opt != 'src_ip') + return true; + if (!dopt.isValid(section_id) && opt != 'dest_ip') + return true; + if (!rwopt.isValid(section_id) && opt != 'snat_ip') + return true; + if (!fmopt.isValid(section_id) && opt != 'family') + return true; + if (!tgopt.isValid(section_id) && opt != 'target') + return true; + + var sip = sopt.formvalue(section_id) || '', + dip = dopt.formvalue(section_id) || '', + rwip = rwopt.formvalue(section_id) || '', + fm = fmopt.formvalue(section_id) || '', + tg = tgopt.formvalue(section_id); + + if (fm == 'ipv6' && (sip.indexOf(':') != -1 || sip == '') && (dip.indexOf(':') != -1 || dip == '') && ((rwip.indexOf(':') != -1 && tg == 'SNAT') || rwip == '')) + return true; + if (fm == 'ipv4' && (sip.indexOf(':') == -1) && (dip.indexOf(':') == -1) && ((rwip.indexOf(':') == -1 && tg == 'SNAT') || rwip == '')) + return true; + if (fm == '' || fm == 'any') { + if ((sip.indexOf(':') != -1 || sip == '') && (dip.indexOf(':') != -1 || dip == '') && ((rwip.indexOf(':') != -1 && tg == 'SNAT') || rwip == '')) + return true; + if ((sip.indexOf(':') == -1) && (dip.indexOf(':') == -1) && ((rwip.indexOf(':') == -1 && tg == 'SNAT') || rwip == '')) + return true; + } + + return _('Address family, source address, destination address, rewrite IP address must match'); +} + return view.extend({ callHostHints: rpc.declare({ object: 'luci-rpc', @@ -123,6 +167,7 @@ return view.extend({ var hosts = data[0], devs = data[1], m, s, o; + var fw4 = L.hasSystemFeature('firewall4'); m = new form.Map('firewall', _('Firewall - NAT Rules'), _('NAT rules allow fine grained control over the source IP to use for outbound or forwarded traffic.')); @@ -131,6 +176,7 @@ return view.extend({ s.addremove = true; s.anonymous = true; s.sortable = true; + s.cloneable = true; s.tab('general', _('General Settings')); s.tab('advanced', _('Advanced Settings')); @@ -166,6 +212,33 @@ return view.extend({ o.default = o.enabled; o.editable = true; + if (fw4) { + o = s.taboption('general', form.ListValue, 'family', _('Restrict to address family')); + o.modalonly = true; + o.rmempty = true; + o.value('any', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.value('', _('automatic')); // infer from zone or used IP addresses + o.cfgvalue = function(section_id) { + var val = this.map.data.get(this.map.config, section_id, 'family'); + + if (!val) + return ''; + else if (val == 'any' || val == 'all' || val == '*') + return 'any'; + else if (val == 'inet' || String(val).indexOf('4') != -1) + return 'ipv4'; + else if (String(val).indexOf('6') != -1) + return 'ipv6'; + }; + o.validate = function(section_id, value) { + fwtool.updateHostHints(this.map, section_id, 'src_ip', value, hosts); + fwtool.updateHostHints(this.map, section_id, 'dest_ip', value, hosts); + return !fw4?true:validate_opt_family(this, section_id, 'family'); + }; + } + o = s.taboption('general', fwtool.CBIProtocolSelect, 'proto', _('Protocol')); o.modalonly = true; o.default = 'all'; @@ -178,9 +251,12 @@ return view.extend({ o.default = 'lan'; o = fwtool.addIPOption(s, 'general', 'src_ip', _('Source address'), - _('Match forwarded traffic from this IP or range.'), 'ipv4', hosts); + _('Match forwarded traffic from this IP or range.'), !fw4?'ipv4':'', hosts); o.rmempty = true; - o.datatype = 'neg(ipmask4)'; + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; + o.validate = function(section_id, value) { + return !fw4?true:validate_opt_family(this, section_id, 'src_ip'); + }; o = s.taboption('general', form.Value, 'src_port', _('Source port'), _('Match forwarded traffic originating from the given source port or port range.')); @@ -192,9 +268,12 @@ return view.extend({ o.depends({ proto: 'udp', '!contains': true }); o = fwtool.addIPOption(s, 'general', 'dest_ip', _('Destination address'), - _('Match forwarded traffic directed at the given IP address.'), 'ipv4', hosts); + _('Match forwarded traffic directed at the given IP address.'), !fw4?'ipv4':'', hosts); o.rmempty = true; - o.datatype = 'neg(ipmask4)'; + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; + o.validate = function(section_id, value) { + return !fw4?true:validate_opt_family(this, section_id, 'dest_ip'); + }; o = s.taboption('general', form.Value, 'dest_port', _('Destination port'), _('Match forwarded traffic directed at the given destination port or port range.')); @@ -211,20 +290,22 @@ return view.extend({ o.value('SNAT', _('SNAT - Rewrite to specific source IP or port')); o.value('MASQUERADE', _('MASQUERADE - Automatically rewrite to outbound interface IP')); o.value('ACCEPT', _('ACCEPT - Disable address rewriting')); + o.validate = function(section_id, value) { + return !fw4?true:validate_opt_family(this, section_id, 'target'); + }; o = fwtool.addLocalIPOption(s, 'general', 'snat_ip', _('Rewrite IP address'), _('Rewrite matched traffic to the specified source IP address.'), devs); o.placeholder = null; o.depends('target', 'SNAT'); o.validate = function(section_id, value) { - var port = this.map.lookupOption('snat_port', section_id), - a = this.formvalue(section_id), - p = port ? port[0].formvalue(section_id) : null; + var a = this.formvalue(section_id), + p = this.section.formvalue(section_id, 'snat_port'); if ((a == null || a == '') && (p == null || p == '') && value == '') return _('A rewrite IP must be specified!'); - return true; + return !fw4?true:validate_opt_family(this, section_id, 'snat_ip'); }; o = s.taboption('general', form.Value, 'snat_port', _('Rewrite port'), @@ -236,6 +317,17 @@ return view.extend({ o.depends({ proto: 'tcp', '!contains': true }); o.depends({ proto: 'udp', '!contains': true }); + var have_fw4 = L.hasSystemFeature('firewall4') + if (!have_fw4) { + o = s.taboption('advanced', form.Value, 'ipset', _('Use ipset')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + o.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + o.modalonly = true; + o.rmempty = true; + } + o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Outbound device'), _('Matches forwarded traffic using the specified outbound network device.')); o.noaliases = true; @@ -246,10 +338,12 @@ return view.extend({ fwtool.addLimitOption(s); fwtool.addLimitBurstOption(s); - o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), - _('Passes additional arguments to iptables. Use with care!')); - o.modalonly = true; - o.rmempty = true; + if (!have_fw4) { + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + o.rmempty = true; + } o = s.taboption('timed', form.MultiValue, 'weekdays', _('Week Days')); o.modalonly = true; @@ -278,11 +372,11 @@ return view.extend({ for (var i = 1; i <= 31; i++) o.value(i); - o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh.mm.ss)')); + o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh:mm:ss)')); o.modalonly = true; o.datatype = 'timehhmmss'; - o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh.mm.ss)')); + o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh:mm:ss)')); o.modalonly = true; o.datatype = 'timehhmmss'; diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js index 5ece96be2..80df278f3 100644 --- a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js @@ -33,6 +33,7 @@ return view.extend({ var ctHelpers = data[0], fwDefaults = data[1], m, s, o, inp, out; + var fw4 = L.hasSystemFeature('firewall4'); m = new form.Map('firewall', _('Firewall - Zone Settings'), _('The firewall creates zones over your network interfaces to control network traffic flow.')); @@ -41,7 +42,20 @@ return view.extend({ s.anonymous = true; s.addremove = false; - o = s.option(form.Flag, 'syn_flood', _('Enable SYN-flood protection')); + o = s.option(form.Flag, 'synflood_protect', _('Enable SYN-flood protection')); + o.cfgvalue = function(section_id) { + var val = uci.get('firewall', section_id, 'synflood_protect'); + return (val != null) ? val : uci.get('firewall', section_id, 'syn_flood'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'syn_flood'); + uci.set('firewall', section_id, 'synflood_protect', value); + }; + o.remove = function(section_id) { + uci.unset('firewall', section_id, 'syn_flood'); + uci.unset('firewall', section_id, 'synflood_protect'); + }; + o = s.option(form.Flag, 'drop_invalid', _('Drop invalid packets')); var p = [ @@ -60,21 +74,27 @@ return view.extend({ if (L.hasSystemFeature('offloading')) { s = m.section(form.TypedSection, 'defaults', _('Routing/NAT Offloading'), - _('Experimental feature. Not fully compatible with QoS/SQM.')); + _('Not fully compatible with QoS/SQM.')); s.anonymous = true; s.addremove = false; - o = s.option(form.Flag, 'flow_offloading', - _('Software flow offloading'), - _('Software based offloading for routing/NAT')); - o.optional = true; - - o = s.option(form.Flag, 'flow_offloading_hw', - _('Hardware flow offloading'), - _('Requires hardware NAT support. Implemented at least for mt7621')); - o.optional = true; - o.depends('flow_offloading', '1'); + o = s.option(form.RichListValue, "offloading_type", _("Flow offloading type")); + o.value('0', _("None")); + o.value('1', _("Software flow offloading"), _('Software based offloading for routing/NAT.')); + o.value('2', _("Hardware flow offloading"), _('Hardware based offloading for routing with/without NAT.') + ' ' + _(' Requires hardware NAT support.')); + o.optional = false; + o.load = function (section_id) { + var flow_offloading = uci.get('firewall', section_id, 'flow_offloading'); + var flow_offloading_hw = uci.get('firewall', section_id, 'flow_offloading_hw'); + return (flow_offloading === '1') + ? (flow_offloading_hw === '1' ? '2' : '1') + : '0'; + }; + o.write = function(section_id, value) { + uci.set('firewall', section_id, 'flow_offloading', value === '0' ? null : '1'); + uci.set('firewall', section_id, 'flow_offloading_hw', value === '2' ? '1' : null); + }; } @@ -82,6 +102,7 @@ return view.extend({ s.addremove = true; s.anonymous = true; s.sortable = true; + s.nodescriptions = true; s.handleRemove = function(section_id, ev) { return firewall.deleteZone(section_id).then(L.bind(function() { @@ -129,7 +150,7 @@ return view.extend({ var p = [ s.taboption('general', form.ListValue, 'input', _('Input')), s.taboption('general', form.ListValue, 'output', _('Output')), - s.taboption('general', form.ListValue, 'forward', _('Forward')) + s.taboption('general', form.ListValue, 'forward', _('Intra zone forward')) ]; for (var i = 0; i < p.length; i++) { @@ -143,13 +164,29 @@ return view.extend({ p[1].default = fwDefaults.getOutput(); p[2].default = fwDefaults.getForward(); - o = s.taboption('general', form.Flag, 'masq', _('Masquerading')); + o = s.taboption('general', form.Flag, 'masq', _('Masquerading'), + _('Enable network address and port translation IPv4 (NAT4 or NAPT4) for outbound traffic on this zone. This is typically enabled on the wan zone.')); o.editable = true; + o.tooltip = function(section_id) { + var family = uci.get('firewall', section_id, 'family') + var masq_src = uci.get('firewall', section_id, 'masq_src') + var masq_dest = uci.get('firewall', section_id, 'masq_dest') + if ((!family || family.indexOf('6') == -1) && (masq_src || masq_dest)) + return _('Limited masquerading enabled'); + return null; + }; + + /* o = s.taboption('general', form.Flag, 'fullcone', _('Full Cone')); o.editable = true; o.depends('masq', '1'); + o = s.taboption('general', form.Flag, 'fullcone6', _('Full Cone IPv6')); + o.editable = true; + o.depends('masq', '1'); + */ + o = s.taboption('general', form.Flag, 'mtu_fix', _('MSS clamping')); o.modalonly = true; @@ -161,21 +198,24 @@ return view.extend({ }; o.write = function(section_id, formvalue) { var name = uci.get('firewall', section_id, 'name'), - cfgvalue = this.cfgvalue(section_id); + cfgvalue = this.cfgvalue(section_id), + oldNetworks = L.toArray(cfgvalue), + newNetworks = L.toArray(formvalue); - /* - if (typeof(cfgvalue) == 'string' && Array.isArray(formvalue) && (cfgvalue == formvalue.join(' '))) + oldNetworks.sort(); + newNetworks.sort(); + + if (oldNetworks.join(' ') == newNetworks.join(' ')) return; - */ var tasks = [ firewall.getZone(name) ]; if (Array.isArray(formvalue)) - for (var i = 0; i < formvalue.length; i++) { - var netname = formvalue[i]; - tasks.push(network.getNetwork(netname).then(function(net) { + for (var i = 0; i < newNetworks.length; i++) { + var netname = newNetworks[i]; + tasks.push(network.getNetwork(netname).then(L.bind(function(netname, net) { return net || network.addNetwork(netname, { 'proto': 'none' }); - })); + }, this, netname))); } return Promise.all(tasks).then(function(zone_networks) { @@ -204,10 +244,24 @@ return view.extend({ o.multiple = true; o = s.taboption('advanced', form.DynamicList, 'subnet', _('Covered subnets'), _('Use this option to classify zone traffic by source or destination subnet instead of networks or devices.')); - o.datatype = 'neg(cidr)'; + o.datatype = 'neg(cidr("true"))'; o.modalonly = true; o.multiple = true; + if (fw4) { + o = s.taboption('advanced', form.Flag, 'masq6', _('IPv6 Masquerading'), + _('Enable network address and port translation IPv6 (NAT6 or NAPT6) for outbound traffic on this zone.')); + o.modalonly = true; + o.tooltip = function(section_id) { + var family = uci.get('firewall', section_id, 'family') + var masq_src = uci.get('firewall', section_id, 'masq_src') + var masq_dest = uci.get('firewall', section_id, 'masq_dest') + if ((!family || family.indexOf('6') >= 0) && (masq_src || masq_dest)) + return _('Limited masquerading enabled'); + return null; + }; + } + o = s.taboption('advanced', form.ListValue, 'family', _('Restrict to address family')); o.value('', _('IPv4 and IPv6')); o.value('ipv4', _('IPv4 only')); @@ -215,16 +269,24 @@ return view.extend({ o.modalonly = true; o = s.taboption('advanced', form.DynamicList, 'masq_src', _('Restrict Masquerading to given source subnets')); - o.depends('family', ''); - o.depends('family', 'ipv4'); - o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + if (fw4) { + o.datatype = 'list(neg(or(uciname,hostname,ipmask)))'; + } else { + o.depends('family', ''); + o.depends('family', 'ipv4'); + o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + } o.placeholder = '0.0.0.0/0'; o.modalonly = true; o = s.taboption('advanced', form.DynamicList, 'masq_dest', _('Restrict Masquerading to given destination subnets')); - o.depends('family', ''); - o.depends('family', 'ipv4'); - o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + if (fw4) { + o.datatype = 'list(neg(or(uciname,hostname,ipmask)))'; + } else { + o.depends('family', ''); + o.depends('family', 'ipv4'); + o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + } o.placeholder = '0.0.0.0/0'; o.modalonly = true; @@ -239,8 +301,7 @@ return view.extend({ o.depends('auto_helper', '0'); o.modalonly = true; for (var i = 0; i < ctHelpers.length; i++) - //o.value(ctHelpers[i].name, '%s (%s)%s'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase(), ctHelpers[i].name.toUpperCase())); - o.value(ctHelpers[i].name, '%s (%s)'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase())); + o.value(ctHelpers[i].name, E('%s (%s)%s'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase(), ctHelpers[i].name.toUpperCase()))); o = s.taboption('advanced', form.Flag, 'log', _('Enable logging on this zone')); o.modalonly = true; @@ -250,32 +311,34 @@ return view.extend({ o.placeholder = '10/minute'; o.modalonly = true; - o = s.taboption('extra', form.DummyValue, '_extrainfo'); - o.rawhtml = true; - o.modalonly = true; - o.cfgvalue = function(section_id) { - return _('Passing raw iptables arguments to source and destination traffic classification rules allows to match packets based on other criteria than interfaces or subnets. These options should be used with extreme care as invalid values could render the firewall ruleset broken, completely exposing all services.'); - }; + if (!L.hasSystemFeature('firewall4')) { + o = s.taboption('extra', form.DummyValue, '_extrainfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + return _('Passing raw iptables arguments to source and destination traffic classification rules allows to match packets based on other criteria than interfaces or subnets. These options should be used with extreme care as invalid values could render the firewall ruleset broken, completely exposing all services.'); + }; - o = s.taboption('extra', form.Value, 'extra_src', _('Extra source arguments'), _('Additional raw iptables arguments to classify zone source traffic, e.g. -p tcp --sport 443 to only match inbound HTTPS traffic.')); - o.modalonly = true; - o.cfgvalue = function(section_id) { - return uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); - }; - o.write = function(section_id, value) { - uci.unset('firewall', section_id, 'extra'); - uci.set('firewall', section_id, 'extra_src', value); - }; + o = s.taboption('extra', form.Value, 'extra_src', _('Extra source arguments'), _('Additional raw iptables arguments to classify zone source traffic, e.g. -p tcp --sport 443 to only match inbound HTTPS traffic.')); + o.modalonly = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'extra'); + uci.set('firewall', section_id, 'extra_src', value); + }; - o = s.taboption('extra', form.Value, 'extra_dest', _('Extra destination arguments'), _('Additional raw iptables arguments to classify zone destination traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS traffic.')); - o.modalonly = true; - o.cfgvalue = function(section_id) { - return uci.get('firewall', section_id, 'extra_dest') || uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); - }; - o.write = function(section_id, value) { - uci.unset('firewall', section_id, 'extra'); - uci.set('firewall', section_id, 'extra_dest', value); - }; + o = s.taboption('extra', form.Value, 'extra_dest', _('Extra destination arguments'), _('Additional raw iptables arguments to classify zone destination traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS traffic.')); + o.modalonly = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'extra_dest') || uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'extra'); + uci.set('firewall', section_id, 'extra_dest', value); + }; + } o = s.taboption('general', form.DummyValue, '_forwardinfo'); o.rawhtml = true; diff --git a/luci-app-firewall/po/ar/firewall.po b/luci-app-firewall/po/ar/firewall.po new file mode 100644 index 000000000..89ce2dbce --- /dev/null +++ b/luci-app-firewall/po/ar/firewall.po @@ -0,0 +1,1589 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-16 16:41+0000\n" +"Last-Translator: Rex_sa \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "- إضافة IP -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "- اضافة MAC -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"‍‎Accept %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "منع إعادة كتابة المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"‎Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"‎Drop %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"تعيين تصنيف DSCP %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"تعيين مساعد التعقب %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"علامة جدار الحماية %{set_mark?Assign:XOR} " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "‎Automatically rewrite source IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"‎Do not track %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"‎Reject %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"‎Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "يجب تحديد إعادة كتابة IP!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "قبول - تعطيل إعادة كتابة العنوان" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "إجراء" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"وسيطات iptables خام إضافية لتصنيف حركة مرور وجهة المنطقة ، على " +"سبيل المثال -p tcp --dport 443 لمطابقة حركة مرور HTTPS " +"الصادرة فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"وسيطات iptables خام إضافية لتصنيف حركة مرور مصدر المنطقة ، على " +"سبيل المثال -p tcp --sport 443 لمطابقة حركة مرور HTTPS " +"الواردة فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "عائلة العنوان، يجب أن تتطابق عنوان IP الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"يجب أن تتطابق عائلة العنوان وعنوان المصدر وعنوان الوجهة وإعادة كتابة عنوان IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "إعدادات متقدمة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "السماح بحركة المرور \"الغير الصالحة\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "السماح بإعادة التوجيه من مناطق المصدر :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "السماح بإعادة التوجيه إلى مناطق الوجهة :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "أي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "اي يوم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"قم بتطبيق XOR على مستوى بت للقيمة المحددة وقيمة العلامة الحالية على " +"الاتصالات القائمة. التنسيق هو القيمة [/ القناع]. إذا تم تحديد قناع ، فسيتم " +"التخلص من البتات المحددة في القناع." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "قم بتطبيق فئة أو قيمة DSCP المحددة على الاتصالات القائمة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "قم بتعيين مساعد تتبع الاتصال المحدد لحركة المرور المتطابقة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "تعيين المساعد التلقائي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "قم بتعيين مساعدي conntrack تلقائيًا بناءً على بروتوكول المرور والبوابة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "تعليق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "إعدادات Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "مساعدين كونتراك" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "تم حفظ المحتويات." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "يكمل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "الأجهزة المغطاة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "الشبكات المغطاة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "الشبكات الفرعية المغطاة" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "القواعد المخصصة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"تسمح لك القواعد المخصصة بتنفيذ أوامر iptables التعسفية التي لا يغطيها إطار " +"عمل جدار الحماية. يتم تنفيذ الأوامر بعد كل إعادة تشغيل لجدار الحماية ، " +"مباشرة بعد تحميل مجموعة القواعد الافتراضية." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "تصنيف DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "علامة DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "علامة DSCP مطلوبة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "عنوان الوجهة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "بوابة الوجهة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "منطقة الوجهة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "اسم الجهاز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"لا تقم بتثبيت قواعد إضافية لرفض حركة المرور المعاد توجيهها مع حالة conntrack " +" غير صالحة . قد يكون هذا مطلوبًا لإعدادات المسار غير المتماثلة " +"المعقدة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "قم بإسقاط الحزم غير الصالحة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "شغل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "تفعيل NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "تفعيل الحماية من الفيضانات SYN" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "قم بتمكين تسجيل الدخول إلى هذه المنطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "مفعَّل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "توقع: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "يختار صراحة مساعدي تتبع الاتصال المسموح به لحركة مرور المنطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "عنوان IP خارجي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "منفذ خارجي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "حجج اضافية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "وسيطات الوجهة الإضافية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "حجج iptables الإضافية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "حجج مصدر إضافي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "جدار الحماية - القواعد المخصصة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "جدار الحماية - قواعد NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "جدار الحماية - منفذ إلى الأمام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "جدار الحماية - قواعد المرور" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "جدار الحماية - إعدادات المنطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "ترحيل تكوين جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "إلى الأمام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "الجمعة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"ابتداءً من %{src}%{ src_device?, interface %{src_device}%{src_ip?، " +"IP %{ src_ip#%{ next?, }%{ item.ival}}} %{ src_port?, port " +"%{ src_port#%{ next?, }%{ item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"من %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"من %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "الاعدادات العامة" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "منح الوصول إلى تكوين جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "تفريغ تدفق الأجهزة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "مجموعات IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 و IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 فقط" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 فقط" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "جهاز وارد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "إدخال" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "عنوان IP الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "منفذ داخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "المنطقة الداخلية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "علامة DSCP غير صالحة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "قيمة حد غير صالحة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "حد الطلقات" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "تقييد رسائل السجل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "حد المطابقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"مطابقة محدودة ل ٪ {limit.num} حزم لكل ٪ {limit.unit} ٪ {limit.burst؟ انفجار ٪ {limit.burst} }" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "تمكين التنكر المحدود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "يحد من مطابقة حركة المرور إلى المعدل المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP مصدر الاسترجاع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - إعادة الكتابة تلقائيًا إلى عنوان IP للواجهة الصادرة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "لقط MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "تنكر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "تطابق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "تطابق DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "تطابق نوع ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "تطابق الأجهزة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "تطابق حركة المرور المعاد توجيهها إلى عنوان IP المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"تطابق حركة المرور المعاد توجيهها إلى منفذ الوجهة المحدد أو نطاق المنفذ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "تطابق حركة المرور المعاد توجيهها من هذا IP أو النطاق." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"تطابق حركة المرور المعاد توجيهها الناشئة من منفذ المصدر المحدد أو نطاق " +"المنفذ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "مساعد المطابقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"تطابق حركة المرور الواردة الموجهة إلى منفذ الوجهة المحدد أو نطاق المنفذ على " +"هذا المضيف" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "علامة المطابقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "تطابق حركة المرور باستخدام مساعد تتبع الاتصال المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "يتطابق مع علامة جدار حماية معينة أو نطاق من العلامات المختلفة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "يطابق حركة المرور المعاد توجيهها باستخدام جهاز الشبكة الصادرة المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "يطابق حركة المرور التي تحمل علامة DSCP المحددة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"الحد الأقصى لعدد الحزم التي يجب مطابقتها: يتم إعادة شحن هذا الرقم بواحدة في " +"كل مرة لا يتم فيها الوصول إلى الحد المحدد أعلاه ، حتى هذا الرقم." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "الإثنين" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "أيام الشهر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "قواعد NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"تسمح قواعد NAT بالتحكم الدقيق في عنوان IP المصدر لاستخدامه في حركة المرور " +"الصادرة أو المُعاد توجيهها." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "غير متوافق تمامًا مع QoS / SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "تطابق حركة المرور الواردة الموجهة إلى عنوان IP المحدد فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "تطابق فقط حركة المرور الواردة من أجهزة MAC هذه." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "تطابق فقط حركة المرور الواردة من هذا IP أو النطاق." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"تطابق فقط حركة المرور الواردة الصادرة من منفذ المصدر المحدد أو نطاق المنفذ " +"على مضيف العميل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "جهاز الصادر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "المنطقة الصادرة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "انتاج" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "يمرر الحجج الإضافية إلى iptables. استخدم بعناية!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"يسمح تمرير وسيطات iptables الأولية إلى قواعد تصنيف حركة المرور إلى المصدر " +"والوجهة بمطابقة الحزم بناءً على معايير أخرى غير الواجهات أو الشبكات الفرعية. " +"يجب استخدام هذه الخيارات بحذر شديد نظرًا لأن القيم غير الصالحة قد تؤدي إلى " +"كسر مجموعة قواعد جدار الحماية ، مما يؤدي إلى تعريض جميع الخدمات تمامًا." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "بوابة التوجيه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"يسمح إعادة توجيه المنفذ لأجهزة الكمبيوتر البعيدة على الإنترنت بالاتصال " +"بكمبيوتر أو خدمة معينة داخل شبكة LAN الخاصة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "البروتوكول" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"إعادة توجيه حركة المرور الواردة المتطابقة إلى المنفذ المحدد على المضيف " +"الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "إعادة توجيه حركة المرور الواردة المتطابقة إلى المضيف الداخلي المحدد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "يتطلب دعم NAT للأجهزة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "قصر التنكر على الشبكات الفرعية للوجهة المحددة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "قصر التنكر على الشبكات الفرعية للمصدر المحدد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "تقييد لمعالجة الأسرة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "أعد كتابة عنوان IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "أعد كتابة حركة المرور المتطابقة إلى عنوان IP المصدر المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "أعد كتابة حركة المرور المتطابقة إلى منفذ المصدر المحدد أو نطاق المنفذ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "أعد كتابة المنفذ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "التوجيه / تفريغ NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - إعادة الكتابة إلى عنوان IP أو منفذ معين" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "السبت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "وضع علامة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"قم بتعيين قيمة العلامة المحددة على الاتصالات القائمة. التنسيق هو القيمة [/ " +"القناع]. إذا تم تحديد قناع ، فسيتم تعديل وحدات البت المحددة في القناع فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "تفريغ تدفق البرنامج" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "عنوان IP المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "عنوان MAC المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "عنوان المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "منفذ المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "منطقة المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"يحدد ما إذا كان سيتم ربط قاعدة حركة المرور هذه بجهاز شبكة محدد وارد أو صادر." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"يحدد ما إذا كان سيتم استخدام عنوان IP الخارجي أو الداخلي لحركة المرور " +"المنعكسة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "تاريخ البدء (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "وقت البدء (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "تاريخ التوقف (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "وقت التوقف (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "الأحد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "يجب تغيير تكوين جدار الحماية الحالي لكي يعمل LuCI بشكل صحيح." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"يقوم جدار الحماية بإنشاء مناطق عبر واجهات الشبكة للتحكم في تدفق حركة مرور " +"الشبكة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"تتحكم الخيارات أدناه في سياسات إعادة التوجيه بين هذه المنطقة (%s) والمناطق " +"الأخرى. تغطي مناطق الوجهة حركة المرور المعاد توجيهها " +"الناشئة عن %q. تتطابق مناطق المصدر مع حركة المرور " +"المعاد توجيهها من المناطق الأخرى المستهدفة بنسبة %q. قاعدة " +"إعادة التوجيه أحادية الاتجاه، على سبيل المثال، لا يعني " +"التقدم من الشبكة المحلية إلى الشبكة المحلية إذنًا بإعادة التوجيه من الشبكة " +"المحلية إلى الشبكة المحلية أيضًا." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"يحدد هذا القسم الخصائص العامة ل q%. يعين خياري الإدخال و " +"الإخراج السياسات الافتراضية لحركة المرور التي تدخل وتغادر هذه المنطقة " +"بينما يصف خيار إعادة التوجيه سياسة حركة المرور المعاد توجيهها بين " +"الشبكات المختلفة داخل المنطقة. تحدد الشبكات المغطاة الشبكات " +"المتاحة الأعضاء في هذه المنطقة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "الخميس" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "قيود الوقت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "الوقت بالتوقيت العالمي المنسق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "تم تمكين قيود الوقت لهذه القاعدة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "نفذ الوقت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"إلى%{dest}%{ dest_device?, interface %{dest_device}}%{ dest_ip?، " +"IP %{ dest_ip#%{ next?, }%{ item.ival}}} %{ dest_port?, port " +"%{ dest_port#%{ next?, }%{ item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "مساعد التتبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "قواعد المرور" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"تحدد قواعد المرور سياسات الحزم التي تنتقل بين مناطق مختلفة ، على سبيل المثال " +"لرفض حركة المرور بين مضيفين معينين أو لفتح منافذ WAN على جهاز التوجيه." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "الثلاثاء" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "تعذر حفظ المحتويات: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "مساعد conntrack غير معروف أو غير مثبت \" %s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT بدون اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "تقدم بدون إسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "قاعدة بدون اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "منطقة بدون اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "بروتوكول غير معروف" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"عند الضغط على \"متابعة\" ، سيتم تحويل أقسام \"إعادة التوجيه\" ذات الهدف " +"\"SNAT\" إلى أقسام \"nat\" وسيتم إعادة تشغيل جدار الحماية لتطبيق التكوين " +"المحدث." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "استخدم عنوان IP خارجي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "استخدم عنوان IP الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"استخدم هذا الخيار لتصنيف حركة مرور المنطقة عن طريق أجهزة الشبكة الأولية غير " +" uci ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"استخدم هذا الخيار لتصنيف حركة مرور المنطقة حسب المصدر أو الشبكة الفرعية " +"الوجهة بدلاً من الشبكات أو الأجهزة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "مطلوب علامة صالحة لجدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "الأربعاء" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "أيام الأسبوع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "علامة جدار الحماية XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "علامة XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "المنطقة=> تَوجِيه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "المناطق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "قبول" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "أي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "أي منطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "تطبيق علامة جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "تعيين مساعد conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "يوم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "لا تعيد الكتابة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "لا تتبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "إبعاد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "ساعة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "دقيقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "رفض" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "ثانية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "هذا الجهاز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "هذه المنطقة الجديدة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "غير محدود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "غير محدد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "علامة جدار حماية صالحة" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "برنامج التفريغ القائم على التوجيه / NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" + +#, fuzzy +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/bg/firewall.po b/luci-app-firewall/po/bg/firewall.po index 338618321..cf10f4dfd 100644 --- a/luci-app-firewall/po/bg/firewall.po +++ b/luci-app-firewall/po/bg/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-10-17 17:10+0000\n" +"Last-Translator: Boyan Alexiev \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -12,361 +12,428 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.8-rc\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +#, fuzzy msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Изходящ} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP с типове %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- добави IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" +msgstr "-- добави MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" -msgstr "" +msgstr "Действие" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" -msgstr "" +msgstr "Разширени настройки" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "Разрешаване на \"невалиден\" трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "" +msgstr "Разрешаване на препращане от изходящи зони :" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" -msgstr "" +msgstr "Разрешаване на препращане към дестинационни зони :" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" -msgstr "" +msgstr "Всички" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" -msgstr "" +msgstr "Всеки ден" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "" +msgstr "Настройки на Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "" +msgstr "Помощници на Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "" +msgstr "Съдържанието е записано." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" +msgstr "Продължи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "Обхванати устройства" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" -msgstr "" +msgstr "Обхванати мрежи" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "Обхванати подмрежи" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" -msgstr "" +msgstr "Потребителски правила" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "" +msgstr "Адрес на дестинацията" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "" +msgstr "Дестинейшън Порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" -msgstr "" +msgstr "Дестинейшън зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Име на устройството" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "" +msgstr "Изпускане на невалидни пакети" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "" +msgstr "Включване" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "" +msgstr "Разрешаване на NAT loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" -msgstr "" +msgstr "Активиране на SYN-flood защита" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" +msgstr "Разрешаване на журнал в тази зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Позволен" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "Очакване: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" -msgstr "" +msgstr "Външен IP адрес" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" -msgstr "" +msgstr "Външен порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" -msgstr "" +msgstr "Допълнителни аргументи" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" -msgstr "" +msgstr "Допълнителни аргументи за дестинацията" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "" +msgstr "Допълнителни аргументи на iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" +msgstr "Допълнителни аргументи за източника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" -msgstr "" +msgstr "Защитна стена" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" +msgstr "Защитна стена - Потребителски правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" -msgstr "" +msgstr "Защитна стена - NAT правила" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "" +msgstr "Защитна стена - препращане на портове" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "" +msgstr "Защитна стена - Трафик правила" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "" +msgstr "Защитна стена - Настройки на зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Миграция на конфигурацията на защитната стена" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "" +msgstr "Напред" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" -msgstr "" +msgstr "Петък" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" +msgstr "Общи настройки" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Предоставяне на достъп до конфигурацията на защитната стена" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" +msgstr "Хардуерно разтоварване на потока" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" -msgstr "" +msgstr "IPv4 и IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" +msgstr "Само IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "" +msgstr "Само IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" +msgstr "Входящо устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" -msgstr "" +msgstr "Вход" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" -msgstr "" +msgstr "Вътрешен IP адрес" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" -msgstr "" +msgstr "Вътрешен порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" +msgstr "Вътрешна зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" -msgstr "" +msgstr "Бърст лимит" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" -msgstr "" +msgstr "Ограничаване на съобщенията в журнала" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" -msgstr "" +msgstr "Ограничи съвпадащаите" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 -msgid "Limits traffic matching to the specified rate." +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Ограничава съвпадащия трафик до определената скорост." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" -msgstr "" +msgstr "Понеделник" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" +msgstr "Име" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Не е напълно съвместима с QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -657,202 +823,194 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 -msgid "Protocol" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" -msgstr "" +msgstr "Събота" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" -msgstr "" +msgstr "Неделя" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -862,7 +1020,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -871,22 +1029,30 @@ msgid "" "networks specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" -msgstr "" +msgstr "Четвъртък" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Таймаут" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" -msgstr "" +msgstr "Вторник" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" -msgstr "" +msgstr "Сряда" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 -msgid "valid firewall mark" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "MAC" -#~ msgstr "MAC" +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/bn_BD/firewall.po b/luci-app-firewall/po/bn_BD/firewall.po new file mode 100644 index 000000000..62d8e12bc --- /dev/null +++ b/luci-app-firewall/po/bn_BD/firewall.po @@ -0,0 +1,1431 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2021-10-08 18:54+0000\n" +"Last-Translator: Rayhan Nabi \n" +"Language-Team: Bengali (Bangladesh) \n" +"Language: bn_BD\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.9-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "উন্নত সেটিংস" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "সক্রিয় করুন" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "সাধারণ সেটিংস" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "প্রোটোকল" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/ca/firewall.po b/luci-app-firewall/po/ca/firewall.po index 3c4b3ad17..2aaab8960 100644 --- a/luci-app-firewall/po/ca/firewall.po +++ b/luci-app-firewall/po/ca/firewall.po @@ -5,8 +5,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-03-18 11:11+0000\n" +"Last-Translator: \"S. Barj.\" \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -14,208 +14,235 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.5-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Acció" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Ajusts avançats" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Configuració avançada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Permet el reenviament des dels zones d'origen:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Permet el reenviament als zones de destí:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Qualsevol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "" +msgstr "S'han desat els continguts." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" +msgstr "Continua" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Xarxes cobertes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Regles personalitzades" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -226,149 +253,179 @@ msgstr "" "ordres s'executen després de cada reinici de tallafocs, just després el " "conjunt de regles per defecte s'ha carregat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Adreça de destí" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Port de destí" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Zona de destí" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Descarta els paquets invàlids" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Activa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Habilita protecció contra la inundació SYN" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Habilita el registre d'aquesta zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Adreça IP extern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Port extern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Paràmetres extres" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Tallafocs" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Tallafocs - Regles personalitzades" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Tallafocs - Reenviaments de port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Tallafocs - Regles de tràfic" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Tallafocs - Ajusts de zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Reenvia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Divendres" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Ajusts generals" +msgstr "Paràmetres generals" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 i IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Només IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Només IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Entrada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Adreça IP interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Port intern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Zona interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Limita els missatges de registre" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Fixació MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Mascarada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Coincideix" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Coincideix amb el tipus ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -559,74 +681,96 @@ msgstr "" "Coincideix amb trànsit entrant dirigit al port o rang de ports de destí en " "aquest host donat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Dilluns" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nom" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Només coincideix amb trànsit entrant dirigit a la adreça IP donada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Només coincideix amb trànsit entrant des d'aquests MAC." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Només coincideix amb trànsit entrant des d'aquest IP o rang." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -634,27 +778,39 @@ msgstr "" "Només coincideix amb trànsit originant en el host client des del port o del " "rang de ports d'origen donat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Sortida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "Passa paràmetres addicionals al iptables. Utilitzeu-ho amb cura!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -663,12 +819,16 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Reenviaments de port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -676,154 +836,172 @@ msgstr "" "El reenviament de ports permet que els ordinadors remots en el Internet " "connectin a un ordinador o servei específic dins del LAN privat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protocol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "Redirigeix trànsit entrant coincidit al port donat en el host intern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Redirigeix trànsit entrant coincidit al host intern especificat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Restringeix la mascarada a les subxarxes de destí donades" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Restringeix la mascarada a les subxarxes d'origen donades" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Restringeix a la família d'adreces" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Dissabte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Adreça IP d'origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Adreça MAC d'origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Adreça d'origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Port d'origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zona d'origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Diumenge" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -831,8 +1009,8 @@ msgstr "" "El tallafocs crea zones a les teves interfícies de xarxa per controlar el " "flux de tràfic de xarxa." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -848,7 +1026,7 @@ msgstr "" "regla de reenviament es unidirectional, per exemple un reenviament " "de lan a wan no implica permís per reenviar de wan a lan també." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 #, fuzzy msgid "" "This section defines common properties of %q. The input and " @@ -864,22 +1042,30 @@ msgstr "" "Xarxes cobertes especifica quines xarxes disponibles són membres " "d'aquesta zona." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Dijous" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Regles de trànsit" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Les regles de trànsit defineixen polítiques per als paquets viatjant entre " "zones distintes, per exemple per a rebutjar trànsit entre certs hosts o " "obrir ports WAN en el encaminador." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Dimarts" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Dimecres" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zona ⇒ Reenviaments" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zones" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "accepta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "qualsevol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "qualsevol zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "no rastregis" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "descarta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "rebutja" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 -msgid "valid firewall mark" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#~ msgid "%s in %s" -#~ msgstr "%s en %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s amb %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s en %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d paquets al %s" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s i limita a %s" - -#~ msgid "Destination IP address" -#~ msgstr "Adreça IP de destí" - -#~ msgid "Do not rewrite" -#~ msgstr "No reescriguis" - -#~ msgid "Forward to" -#~ msgstr "Reenvia a" - -#~ msgid "From %s in %s" -#~ msgstr "Des de %s en %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Des de %s en %s amb origen %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Des de %s en %s amb orígens %s i %s" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "To %s at %s on this device" -#~ msgstr "A %s a %s en aquest dispositiu" - -#~ msgid "To %s in %s" -#~ msgstr "A %s en %s" - -#~ msgid "To %s on this device" -#~ msgstr "A %s en aquest dispositiu" - -#~ msgid "To %s, %s in %s" -#~ msgstr "A %s, %s en %s" - -#~ msgid "Via %s" -#~ msgstr "Via %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Via %s a %s" - -#~ msgid "any host" -#~ msgstr "qualsevol host" - -#~ msgid "any router IP" -#~ msgstr "qualsevol IP d'encaminador" - -#~ msgid "Force connection tracking" -#~ msgstr "Força el rastreig de connexió" - -#~ msgid "Add" -#~ msgstr "Afegeix" - -#~ msgid "Add and edit..." -#~ msgstr "Afegeix i edita..." - -#~ msgid "External zone" -#~ msgstr "Zona extern" - -#~ msgid "New SNAT rule" -#~ msgstr "Nova regla SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Nova regla de reenviament" - -#~ msgid "New input rule" -#~ msgstr "Nova regla d'entrada" - -#~ msgid "New port forward" -#~ msgstr "Nou reenviament de port" - -#~ msgid "New source NAT" -#~ msgstr "Nou origen NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Obre els ports en el encaminador" - -#~ msgid "Other..." -#~ msgstr "Altre..." - -#~ msgid "To source IP" -#~ msgstr "A l'IP d'origen" - -#~ msgid "To source port" -#~ msgstr "Al port d'origen" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Entrada sense nom)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Regla sense nom)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(SNAT sense nom)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Reenviament interzonal" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Coincideix amb trànsit reenviat al port o rang de ports de destí donat." - -#~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "" -#~ "Coincideix amb trànsit entrant originant en el host client des del port o " -#~ "rang de ports d'origen donat." - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Reescriu el trànsit coincidint cap a la adreça donada." - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Reescriu el trànsit coincidint cap al port d'origen donat. Pot ser deixat " -#~ "en blanc per només reescriure l'adreça IP." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Reescriu a l'origen %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Reescriu als orígens %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "Adreça IP de SNAT" - -#~ msgid "SNAT port" -#~ msgstr "Port SNAT" - -#~ msgid "Source NAT" -#~ msgstr "NAT d'origen" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "El NAT d'origen és un forma específic de mascarada que permet control de " -#~ "gra fi sobre l'IP d'origen utilitzat pel trànsit sortint, per exemple per " -#~ "associar múltiples adreces WAN a subxarxes internes." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Aquesta pàgina us permet canviar propietats avançats de l'entrada de " -#~ "reenviament de port. En la majoria dels casos no hi ha necessitat de " -#~ "modificar aquests ajusts." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Aquesta pàgina us permet canviar propietats avançats de l'entrada de " -#~ "regla de trànsit, com als hosts d'origen i de destí coincidits." - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Podeu especificar múltiples per seleccionar \"-- personalitzat --\" i " -#~ "llavors introduir protocols separats per espai." - -#~ msgid "Zone %q" -#~ msgstr "Zona %q" - -#~ msgid "traffic" -#~ msgstr "trànsit" +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/cs/firewall.po b/luci-app-firewall/po/cs/firewall.po index c91dc4bb9..995bf5614 100644 --- a/luci-app-firewall/po/cs/firewall.po +++ b/luci-app-firewall/po/cs/firewall.po @@ -1,217 +1,274 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2020-02-04 05:03+0000\n" -"Last-Translator: Pavel Borecki \n" +"PO-Revision-Date: 2024-10-22 12:00+0000\n" +"Last-Translator: Ondřej Vajda \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.11-dev\n" +"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" +"X-Generator: Weblate 5.8.2-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP s typy %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- přidat IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" +msgstr "-- přidat MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "" +msgstr " Zabránit přepsání zdroje" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Zahodit %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"Přiřadit DSCP klasifikaci %{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Přiřadit conntrack helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 -msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Automaticky přepsat zdrojovou IP " +"adresu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Nesledovat %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"Odmítnout %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"Staticky přepsat na zdroj %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "Musí být zadána IP adresa pro přepsání!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "ACCEPT - Zakázat přepis adresy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Akce" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" +"Další surové argumenty iptables ke klasifikaci provozu do cílové " +"zóny, např. -p tcp --dport 443 pro pouze odchozí provoz HTTPS." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" +"Další surové argumenty iptables ke klasifikaci provozu ze zdrojové " +"zóny, např. -p tcp --sport 443 pro pouze příchozí provoz HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Pokročilá nastavení" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "Povolit \"neplatný\" provoz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Povolit přesměrování ze zdrojových oblastí:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Povolit přesměrování do zdrojových oblastí:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Libovolné" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" -msgstr "" +msgstr "Kterýkoli den" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 -msgid "Conntrack Settings" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Nastavení pro Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Obsah byl uložen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" +msgstr "Pokračovat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "Pokrytá zařízení" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Pokryté sítě" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "Pokryté podsítě" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Vlastní pravidla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -221,149 +278,179 @@ msgstr "" "nejsou jinak pokryté frameworkem firewallu. Příkazy jsou spuštěny po každém " "restartu firewallu, právě po načtení výchozí sady pravidel." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "" +msgstr "Klasifikace DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "Značka DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Cílová adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Cílový port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Cílová zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Název zařízení" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Zahazovat neplatné pakety" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Povolit" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Povolit NAT Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Povolit ochranu proti SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Povolit logování v této oblasti" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "Očekáváno: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Vnější IP adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Vnější port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Další argumenty volání" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" -msgstr "" +msgstr "Další argumenty pro cíl" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "" +msgstr "Další argumenty pro iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" +msgstr "Další argumenty pro zdroj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" msgstr "" #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Brána firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Firewall - Vlastní pravidla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 -msgid "Firewall - NAT Rules" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - pravidla NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Firewall - Přesměrování portů" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Firewall - Pravidla síťového provozu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Firewall - Nastavení zón" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Migrace konfigurace brány firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Přesměrování" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "pátek" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Obecné nastavení" +msgstr "Obecná nastavení" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Udělit přístup ke konfiguraci brány firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 a IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "pouze IPv4" +msgstr "Pouze IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "pouze IPv6" +msgstr "Pouze IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" +msgstr "Příchozí zařízení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Vstup" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Vnitřní IP adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Vnitřní port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Vnitřní zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "Neplatná značka DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" +msgstr "Neplatná hodnota limitu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Omezit logovací zprávy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "" +msgstr "MASQUERADE - Automaticky přepsat na IP adresu odchozího rozhraní" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSS clamping" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Maškárádování" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Shoda" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Odpovídá ICMP typu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -554,74 +706,98 @@ msgstr "" "Vybrat příchozí provoz, směrovaný na zadaný cílový port nebo rozsah portů " "tohoto hostitele" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "pondělí" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Dny v měsíci" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "Pravidla NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" +"Pravidla NAT umožňují jemně odstupňovanou kontrolu nad zdrojovou IP adresou " +"pro odchozí nebo předávaný provoz." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" -msgstr "Název" +msgstr "Jméno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Není plně kompatibilní s QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Vybrat pouze příchozí provoz, směrovaný na danou IP adresu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Vybrat pouze příchozí provoz z těchto MAC adres." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Vybrat pouze příchozí provoz z této IP nebo rozsahu IP adres." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -629,27 +805,39 @@ msgstr "" "Vybrat pouze příchozí provoz, pocházející ze zadaného portu nebo rozsahu " "portů klienta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "" +msgstr "Odchozí zařízení" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" -msgstr "" +msgstr "Odchozí zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Výstup" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "Předává další argumenty iptables. Používat opatrně!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -658,12 +846,16 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Přesměrování portů" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -672,155 +864,173 @@ msgstr "" "Internetu připojení k vybraným počítačům nebo službám uvnitř privátní sítě " "LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protokol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Přesměrovat vybraný příchozí provoz na uvedený port vnitřního hostitele" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Přesměrovat vybraný příchozí provoz na uvedeného vnitřního hostitele" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Vyžaduje hardwarovou podporu NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Omezit maškarádování na uvedené cílové podsítě" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Omezit maškarádování na uvedené zdrojové podsítě" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Omezit na rodinu adres" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "Přepsat IP adresu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Přepsat port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Přepsat na konkrétní zdrojovou IP adresu nebo port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "sobota" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "" +msgstr "Nastavit značku" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Zdrojová IP adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Zdrojová MAC adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Zdrojová adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Zdrojový port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zdrojová zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" -msgstr "" +msgstr "Datum zahájení (rrrr-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Čas zahájení (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" +msgstr "Datum ukončení (rrrr-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Čas ukončení (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "neděle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -828,8 +1038,8 @@ msgstr "" "Firewall vytváří zóny přes vaše síťová rozhraní za účelem řízení síťového " "provozu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -845,7 +1055,7 @@ msgstr "" "Přesměrovávací pravidlo je jednosměrné, například přesměrování z " "lan do wan nepovoluje přesměrování z wan do lan (a naopak)." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -859,22 +1069,30 @@ msgstr "" "pro přesměrování provozu mezi rozdílnými sítěmi uvnitř jedné zóny. " "Pokryté sítě určuje, které z dostupných sítí jsou členy této zóny." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "čtvrtek" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Časová omezení" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Čas v UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Časový limit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Pravidla síťového provozu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Pravidla síťového provozu definují politiky pro cestování paketů mezi " "různými zónami, například pro odmítnutí provozu mezi jistými hostiteli nebo " "pro otevření WAN portů na routeru." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "úterý" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Nelze uložit obsah: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "Nejmenovaný NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Nepojmenované pravidlo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Nepojmenovaná zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Nerozpoznaný protokol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Použít vnější IP adresu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" +msgstr "Použít vnitřní IP adresu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "středa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" -msgstr "" +msgstr "Dny v týdnu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zóna ⇒ Přesměrování" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zóny" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "přijmout" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "libovolný" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "libovolná zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "nesledovat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "zahodit" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "odmítnout" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 -msgid "valid firewall mark" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#~ msgid "%s in %s" -#~ msgstr "%s v %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s s %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s v %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d paketů za %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d paketů za %s, burst %d paketů." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s a omezit na %s" - -#~ msgid "Destination IP address" -#~ msgstr "Cílová IP adresa" - -#~ msgid "Do not rewrite" -#~ msgstr "Nepřepisovat" - -#~ msgid "Forward to" -#~ msgstr "Přesměrovat na" - -#~ msgid "From %s in %s" -#~ msgstr "Z %s v %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Z %s v %s se zdrojovou %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Z %s v %s se zdrojovou %s a %s" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "Network" -#~ msgstr "Síť" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Na %s v %s na tomto zařízení" - -#~ msgid "To %s in %s" -#~ msgstr "Na %s v %s" - -#~ msgid "To %s on this device" -#~ msgstr "Na %s na tomto zařízení" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Na %s, %s v %s" - -#~ msgid "Via %s" -#~ msgstr "Prostřednictvím %s" - -#~ msgid "any host" -#~ msgstr "libovolný hostitel" - -#~ msgid "any router IP" -#~ msgstr "libovolná IP routeru" - -#~ msgid "Force connection tracking" -#~ msgstr "Vynutit sledování připojení" - -#~ msgid "Add" -#~ msgstr "Přidat" - -#~ msgid "Add and edit..." -#~ msgstr "Přidat a upravit" - -#~ msgid "External zone" -#~ msgstr "Vnější zóna" - -#~ msgid "New SNAT rule" -#~ msgstr "Nové pravidlo SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Nové přesměrovací pravidlo" - -#~ msgid "New input rule" -#~ msgstr "Nové vstupní pravidlo" - -#~ msgid "New port forward" -#~ msgstr "Nové přesměrování portu" - -#~ msgid "New source NAT" -#~ msgstr "Nový zdrojový NAT (SNAT)" - -#~ msgid "Open ports on router" -#~ msgstr "Otevřené porty na routeru" - -#~ msgid "Other..." -#~ msgstr "Ostatní ..." - -#~ msgid "To source IP" -#~ msgstr "Na zdrojovou IP" - -#~ msgid "To source port" -#~ msgstr "Na zdrojový port" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Nepojmenovaný vstup)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Nepojmenované pravidlo)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(Nepojmenovaný SNAT)" - -# nebo mimo zóny? -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Přesměrování mezi zónami" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "Vybrat provoz, přesměrovaný na zadaný port nebo rozsah portů" - -#~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "" -#~ "Vybrat příchozí provoz, pocházející ze zadaného portu nebo rozsahu portů " -#~ "klienta." - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Přepsat shodný provoz na uvedenou adresu." - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Přepsat shodný provoz na uvedený zdrojový port. Může zůstat prázdné, pak " -#~ "bude přepsána pouze IP adresa." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Přepsat na zdrojovou %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Přepsat na zdrojovou %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "IP adresa SNATu" - -#~ msgid "SNAT port" -#~ msgstr "Port SNATu" - -#~ msgid "Source NAT" -#~ msgstr "Zdrojový NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "Zdrojový NAT je specifická forma maškarádování, která umožňuje " -#~ "jemnozrnnou kontrolu nad zdrojovými IP, použitými pro odchozí provoz. " -#~ "Využívá se například pro mapování množství WAN adres do vnitřních podsítí." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Tato stránka vám umožňuje změnit pokročilé vlastností přesměrování portů. " -#~ "Ve většině případů není potřeba upravovat tato nastavení." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Tato stránka vám umožňuje změnit pokročilé vlastnosti pravidla síťového " -#~ "provozu, například zdrojové a cílové hostitele." - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Lze určit více protokolů. Vyberte \"-- vlastní --\" a vkládejte protokoly " -#~ "oddělené mezerou." - -#~ msgid "Zone %q" -#~ msgstr "Zóna %q" - -#~ msgid "traffic" -#~ msgstr "provoz" +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/da/firewall.po b/luci-app-firewall/po/da/firewall.po new file mode 100644 index 000000000..933c035fa --- /dev/null +++ b/luci-app-firewall/po/da/firewall.po @@ -0,0 +1,1651 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-01-25 02:53+0000\n" +"Last-Translator: drax red \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Videresend:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 og " +"IPv6:IPv6}:IPv4}%{proto?, protokol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP med typer %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, " +"helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- tilføj IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- tilføj MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accept %{src?%{dest?videresend:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Forhindrer kildeomskrivning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Videresend til%{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Drop %{src?%{dest?videresend:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Tildel DSCP klassifikation %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Tildel forbindelse hjælper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} firewall mærke " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "Omskriv automatisk kilde IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Spor ikke %{src?%{dest?videresend:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Afvis %{src?%{dest?videresend:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statisk omskriv til kilde %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "En omskrivnings-IP skal angives!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Deaktiver adresseomskrivning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Handling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Yderligere rå iptables argumenter til at klassificere " +"zonedestinationstrafik, f.eks. -p tcp --dport 443 for kun at " +"matche udgående HTTPS-trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Yderligere rå iptables argumenter til at klassificere " +"zonekildetrafik, f.eks. -p tcp --sport 443 for kun at matche " +"indgående HTTPS-trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adressefamilie, intern IP-adresse skal stemme overens" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adressefamilie, kildeadresse, destinationsadresse, rewrite IP-adresse skal " +"stemme overens" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Avancerede indstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Tillad \"ugyldig\" trafik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Tillad videresendelse fra kildezoner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Tillad videresendelse til destinationszoner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Enhver dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Anvend en bitvis XOR af den givne værdi og den eksisterende markeringsværdi " +"på etablerede forbindelser. Formatet er værdi[/mask]. Hvis en maske er " +"angivet, nulstilles de bits, der er sat i masken." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Anvend den givne DSCP-klasse eller værdi på etablerede forbindelser." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Tildel den angivne forbindelsessporingshjælper til matchet trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatisk hjælpertildeling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "Tildel automatisk conntrack-hjælpere baseret på trafikprotokol og port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Forbindelsesindstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Forbindelseshjælpere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Indholdet er blevet gemt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Fortsæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Tællere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Dækkede enheder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Dækkede netværk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Dækkede subnets" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Brugerdefinerede regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Brugerdefinerede regler giver dig mulighed for at udføre vilkårlige iptables-" +"kommandoer, som ellers ikke er dækket af firewall-rammen. Kommandoerne " +"udføres efter hver genstart af firewall, lige efter standardregelsættet er " +"blevet indlæst." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP klassifikation" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP-mærke påkrævet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Destinationsadresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Destinationsport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Destination zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Enhedens navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Installer ikke ekstra regler for at afvise videresendt trafik med conntrack-" +"tilstand ugyldig. Dette kan være nødvendigt for komplekse " +"asymmetriske ruteopsætninger." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Drop ugyldige pakker" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Aktiver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Aktiver NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Aktiver SYN-flood beskyttelse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Aktiver logning på denne zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Aktiver netværksadresse og portoversættelse IPv4 (NAT4 eller NAPT4) for " +"udgående trafik på denne zone. Dette er typisk aktiveret på zonen wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Aktiver netværksadresse og portoversættelse IPv6 (NAT6 eller NAPT6) for " +"udgående trafik på denne zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Aktiveret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Aktiverer sporing af pakke og byttetælling for sættet." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Forventer: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Vælger eksplicit tilladte forbindelsessporingshjælpere til zonetrafik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Ekstern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Ekstern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Ekstra argumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Ekstra destinationsargumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Ekstra iptables-argumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Ekstra kildeargumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - brugerdefinerede regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - IP-sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - NAT-regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Port Forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Zoneindstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Firewall-konfigurationsmigrering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Videresend" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Videresendt %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}" +"}}%{mark?, mark %{mark." +"val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Fredag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Fra %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Fra %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Fra %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Generelle indstillinger" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Giv adgang til firewall-konfiguration" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Aflæsning af hardwareflow" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (rækkevidde)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP'er/netværk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP'er/netværk/MAC'er" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 og IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Kun IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6-maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Kun IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Indgående enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Medtag fil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Indgående %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protokol %{proto#%{næste?, }%{item.types?%{item.name}ICMP " +"med typer %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}" +":%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Oprindelig hash-størrelse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Input" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Intern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Intern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Intern zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Intra zone fremad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Ugyldigt DSCP-mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Ugyldig grænseværdi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Ugyldigt navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Grænse brist" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Begræns logmeddelelser" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Begræns matchning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Begræns matchning til %{limit.num} pakker pr. %{limit.unit}%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Begrænset maskering aktiveret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Begrænser trafikmatchning til den specificeret sats." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Loopback-kilde-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASKERING - Omskriv automatisk til udgående grænseflade IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS fastspænding" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Match DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Match ICMP-type" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Match enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Match videresendt trafik rettet mod den angivne IP-adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Match videresendt trafik rettet mod den givne destinationsport eller " +"portområde." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Match videresendt trafik fra denne IP eller dette område." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Match videresendt trafik, der stammer fra den givne kildeport eller " +"portinterval." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Match hjælper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Match indgående trafik rettet mod den givne destinationsport eller " +"portinterval på denne vært" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Match mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Match trafik ved hjælp af den angivne forbindelsessporingshjælper." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Matcher et specifikt firewallmærke eller en række forskellige mærker." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Matcher videresendt trafik ved hjælp af den angivne udgående netværksenhed." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Matcher trafik, der bærer den specificerede DSCP-mærkning." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maks indlæg" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maks. længde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maksimalt indledende antal pakker, der skal matches: Dette antal genoplades " +"med én, hver gang grænsen angivet ovenfor ikke nås, op til dette antal." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Mandag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Måned Dage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-regler tillader finkornet kontrol over kilde-IP'en til brug for udgående " +"eller videresendt trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmaske" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Ikke fuldt kompatibel med QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Match kun indgående trafik rettet mod den angivne IP-adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Match kun indgående trafik fra disse MAC'er." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Match kun indgående trafik fra denne IP eller dette område." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Match kun indgående trafik, der stammer fra den givne kildeport eller " +"portinterval på klientværten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Udgående enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Udgående zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Output" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Pakkefelt match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Pakkefelter, der skal matches på.
Syntax: direction_datatype. " +"e.g.: src_port, dest_net.
Retninger: src, dst. Datatyper: ip, port, mac, net, set.
Retningspræfikser er valgfrie.
*Note: datatype set " +"understøttes ikke i fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Sender yderligere argumenter til iptables. Brug med omhu!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Ved at videregive rå iptables-argumenter til kilde- og " +"destinationstrafikklassificeringsreglerne gør det muligt at matche pakker " +"baseret på andre kriterier end grænseflader eller undernet. Disse muligheder " +"bør bruges med ekstrem forsigtighed, da ugyldige værdier kan gøre firewall-" +"regelsættet brudt, hvilket fuldstændig afslører alle tjenester." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Stien til filen med CIDR'er, undernet, værts-IP'er osv.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Portvideresendelse gør det muligt for fjerncomputere på internettet at " +"oprette forbindelse til en bestemt computer eller tjeneste inden for det " +"private LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Port rækkevidde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Omdiriger matchet indgående trafik til den givne port på den interne vært" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Omdiriger matchet indgående trafik til den angivne interne vært" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Henvis til eksternt sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Reflekszoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Kræver hardware NAT-understøttelse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Begræns Maskering til givne destination subnets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Begræns Maskering til givne kilde subnets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Begræns til adresse familie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Omskriv IP-adressen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Omskriv matchet trafik til den angivne kilde-IP-adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "Omskriv matchet trafik til den angivne kildeport eller portinterval." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Omskriv port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Routing/NAT Offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Omskriv til specifik kilde-IP eller port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Lørdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Sæt mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Indstil den givne mærkeværdi på etablerede forbindelser. Formatet er værdi[/" +"mask]. Hvis der er angivet en maske, ændres kun de bits, der er sat i masken." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Software flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Kilde IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Kilde MAC-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Kildeadresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Kildeport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Kilde zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Angiver, om denne trafikregel skal knyttes til en bestemt indgående eller " +"udgående netværksenhed." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Angiver, om den eksterne eller den interne IP-adresse skal bruges til " +"reflekteret trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdato (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Starttid (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Stopdato (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stoptid (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Opbevaringsmetode" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Søndag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Den eksisterende firewall-konfiguration skal ændres for at LuCI kan fungere " +"korrekt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Firewallen opretter zoner over dine netværksgrænseflader for at kontrollere " +"netværkstrafikstrømmen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Indstillingerne nedenfor styrer videresendelsespolitikkerne mellem denne " +"zone (%s) og andre zoner. Destinationszoner dækker videresendt " +"trafik der stammer fra %q. Kildezoner matcher " +"videresendt trafik fra andre zoner målrettet mod %q. " +"Videresendelsesreglen er envejs, f.eks. en videresendelse fra lan " +"til wan betyder ikke en tilladelse til også at videresende fra wan " +"til lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Dette afsnit definerer almindelige egenskaber for %q. Indstillingerne " +"input og output angiver standardpolitikkerne for trafik, " +"der kommer ind og forlader denne zone, mens indstillingen videresend beskriver politikken for videresendt trafik mellem forskellige netværk " +"inden for zonen. Dækkede netværk angiver, hvilke tilgængelige " +"netværk der er medlemmer af denne zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Torsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Tidsbegrænsninger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Tid i UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Tidsbegrænsninger er aktiveret for denne regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Timeout" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Til %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Til %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Til %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Sporingshjælper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Trafikregler definerer politikker for pakker, der rejser mellem forskellige " +"zoner, for eksempel for at afvise trafik mellem bestemte værter eller for at " +"åbne WAN-porte på routeren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Tirsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Kan ikke gemme indholdet: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Enhed: sekunder. Standard 0 betyder, at posten tilføjes " +"permanent til sættet.
Max: 2147483 sekunder." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ukendt eller ikke installeret conntrack-hjælper \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Unavngivet NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Unavngivne forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Unavngiven regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Unavngivet sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Unavngiven zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Ukendt protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Når du trykker på \"Fortsæt\", vil \"omdirigere\" sektioner med målet " +"\"SNAT\" blive konverteret til \"nat\" sektioner, og firewallen vil blive " +"genstartet for at anvende den opdaterede konfiguration." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Brug ekstern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Brug intern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Brug ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Brug denne mulighed til at klassificere zonetrafik efter rå, ikke-uci-administrerede netværksenheder." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Brug denne indstilling til at klassificere zonetrafik efter kilde eller " +"destination subnet i stedet for netværk eller enheder." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Gyldigt firewallmærke påkrævet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Onsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Ugedage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR firewall-mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Din enhed kører ikke firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Din enhed kører firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Videresendelser" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zoner, hvor refleksionsregler skal skabes. Hvis det ikke er indstillet, " +"bruges kun destinationszonen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "accept" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "enhver zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "enhver/alle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "anvend firewall-mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "tildel forbindelse-hjælper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatisk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap er kun ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Destination IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Destination MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Destinations(under)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Destinationsport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destination ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "omskriv ikke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "spor ikke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "drop" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 understøtter henvisning og oprettelse af IP-sæt for at forenkle " +"matchning af store adresselister uden at skulle oprette en regel for hvert " +"element, der skal matches. Portintervaller i ips-sæt understøttes ikke af " +"firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fraport-tilport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "time" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Til brug med Match-datatyper: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (under)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "afvis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekund" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "sæt: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Kilde ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Kilde-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Source MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Kilde(under)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Kildeport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "denne enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "denne nye zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "ubegrænset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "uspecificeret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "op til 65536 poster." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "gyldigt firewallmærke" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Softwarebaseret offloading til routing/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Aktiver netværksadresse og portoversættelse (NAT eller NAPT) for udgående " +#~ "trafik på denne zone. Dette er typisk aktiveret på wan zone." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Videresend IPv4%{proto?, protokol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Indkommende IPv4%{proto?, protokol %{proto#%{next?, }%{item.types?%{item.name}ICMP med typer %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/de/firewall.po b/luci-app-firewall/po/de/firewall.po index 596f13e1f..b55bd9bdd 100644 --- a/luci-app-firewall/po/de/firewall.po +++ b/luci-app-firewall/po/de/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-04-01 19:11+0000\n" -"Last-Translator: CE4 \n" +"PO-Revision-Date: 2024-10-28 20:23+0000\n" +"Last-Translator: ssantos \n" "Language-Team: German \n" "Language: de\n" @@ -12,19 +12,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 5.8.2-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." @@ -38,91 +38,99 @@ msgstr "" "var>}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp." -"val}:%{dscp.val}}}%{helper?, Tracking-Helfer %{helper.inv?" -"" -"%{helper.val}:%{helper.val}}}" +"Vergleich.\"}}>%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, Tracking-" +"Helfer %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- IP hinzufügen --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- MAC hinzufügen --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} erlauben" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} erlauben" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "Quellmaskierung unterbinden" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -"Weiterleiten zu %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? Port %{dest_port}}" +"Weiterleiten zu %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? Port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} verwerfen" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} verwerfen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -"Setze DSCP-Klassifizierung auf " -"%{set_dscp}" +"Setze DSCP-Klassifizierung auf " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -"Assoziiere Tracking-Helfer %{set_helper}" +"Assoziiere Tracking-Helfer " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" "%{set_mark?Setze:XOR} Firewall-Markierung " "%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "Quell-IP automatisch maskieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -"%{src?%{dest?Weiterleitungs:Eingangs}:Ausgangs}-Tracking verhindern" +"%{src?%{dest?Weiterleitungs:Eingangs}:Ausgangs}-Tracking verhindern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} ablehnen" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} ablehnen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" @@ -130,23 +138,23 @@ msgstr "" "Quell%{snat_ip?-IP %{snat_ip}} %{snat_port?Port %{snat_port}" "} statisch umschreiben" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "Es muss eine IP-Adresse zum Umschreiben angegeben werden!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ACCEPT - Umschreiben von IP-Adressen deaktivieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Aktion" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -156,7 +164,7 @@ msgstr "" "Zonenzielverkehrs, z.B. -p tcp --dport 443, um nur ausgehenden " "HTTPS-Verkehr übereinstimmen zu lassen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -165,37 +173,49 @@ msgstr "" "Zonenquellenverkehr, z.B. -p tcp --sport 443, um nur " "eingehenden HTTPS-Verkehr übereinstimmen zu lassen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adressfamilie, interne IP-Adresse muss übereinstimmen" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adressfamilie, Quelladresse, Zieladresse, IP-Adressenumschreibung muss " +"übereinstimmen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Erweiterte Einstellungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "Erlaube \"ungültigen\" Verkehr" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Erlaube Weiterleitung von Quellzone:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Erlaube Weiterleitung zu Zielzone:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Beliebig" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Beliebig" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -205,61 +225,70 @@ msgstr "" "anwenden. Format ist Wert[/Maske]. Wenn eine Maske angegeben ist, werden die " "korrespondierenden Bits des Wertes genullt." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" "Wende die angegebene DSCP-Klasse oder den angegebenen DSCP-Wert auf " "etablierte Verbindungen an." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" "Weise den angegebenen Verbindungs-Tracking-Helfer selektiertem Verkehr zu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Automatische Helferzuordnung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" "Automatische Zuweisung von Conntrack-Helfern basierend auf Traffic-Protokoll " "und Port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Conntrack-Einstellungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Conntrack-Helfer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Inhalte wurden gespeichert." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Fortfahren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Zähler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Abgedeckte Geräte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Abgedeckte Netzwerke" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Abgedeckte Subnetze" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Benutzerdefinierte Regeln" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -270,37 +299,37 @@ msgstr "" "Befehle werden mit jedem Firewall-Neustart abgearbeitet, direkt nach dem " "Laden der Basisregeln." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "DSCP-Klassifizierung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "DSCP-Markierung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "DSCP-Markierung benötigt" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Zieladresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Zielport" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Ziel-Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Gerätename" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -309,119 +338,156 @@ msgstr "" "Conntrack-Status invalid abzulehnen. Dies kann bei komplexen " "asymmetrischen Routen erforderlich sein." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Ungültige Pakete verwerfen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Aktivieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "NAT-Loopback aktivieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Schutz vor SYN-flood-Attacken" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Protokollierung innerhalb der Zone aktivieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Aktivieren der Netzwerkadressen- und Portübersetzung IPv4 (NAT4 oder NAPT4) " +"für den ausgehenden Verkehr in dieser Zone. Dies wird normalerweise für die " +"Zone wan aktiviert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Aktivieren der Netzwerkadressen- und Portübersetzung IPv6 (NAT6 oder NAPT6) " +"für den ausgehenden Verkehr in dieser Zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Aktiviert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Aktiviert die Paket- und Byte-Zählungsverfolgung für das Set." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "Erwarte: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Experimentelle Funktion. Nicht vollständig kompatibel mit QoS/SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" "Wählt explizit zulässige Verbindungs-Tracking-Helfer für den Zonenverkehr aus" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Externe IP-Adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Externer Port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Zusätzliche Argumente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Zusätzliche Ziel-Argumente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Zusätzliche iptables-Argumente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Zusätzliche Quell-Argumente" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Firewall - Benutzerdefinierte Regeln" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - IP-Sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Firewall - NAT Regeln" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Firewall - Portweiterleitungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Firewall - Traffic-Regeln" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Firewall - Zoneneinstellungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "Migration der Firewall-Konfiguration" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 -msgid "Forward" -msgstr "Weitergeleitet" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 -msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -"Weitergeleiteter IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }" -"%{item.name}}}%{mark?, Markierung %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Weiterleitung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +#, fuzzy +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Weitergeleiteter %{ipv6?%{ipv4?IPv4- und IPv6:" +"IPv6-}:IPv4}-Verkehr%{proto?, Protokoll " +"%{proto#%{next?, }%{item.name}}}%{mark?, Markierung %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Freitag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{src_device}}%{src_ip?, " "IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, Port %{src_port#" -"%{next?, }%{item.ival}}}" +"außer %{item.val}.\"}>%{item.ival}}}%{src_port?, Port " +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{src_device}}%{src_ip?, " "IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#" -"%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"außer %{item.val}.\"}>%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }" +"%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -"Von %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " -"%{src_mac#%{next?, }%{item.ival}}}" +"Von %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "Allgemeine Einstellungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Zugriff auf die Firewall-Konfiguration gewähren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Hardwarebasiertes Offloading zum Routing mit/ohne NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "Hardwarebeschleunigte Flusskontrolle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (Bereich)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-Sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Netzwerke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Netzwerke/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 und IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "nur IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6-Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "nur IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Eingehendes Gerät" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" -"Eingehender IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }%{item.types?" -"%{item.name}ICMP mit Typen %{item.types#%{next?, }%{item}}:" -"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, Helfer " -"%{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Datei einschließen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Eingehende %{ipv6?%{ipv4?IPv4 und IPv6:IPv6}:IPv4}%{proto?, Protokoll %{proto#%{next?, }%{item.types?" +"%{item.name}ICMP mit Typen %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark? mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Initiale Hash Größe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Eingehend" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Interne IP-Adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Interner Port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Interne Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Intra-Zonen-Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Ungültige DSCP-Markierung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Ungültiger Limit-Wert" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Falscher Setname" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Limit-Häufung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Protokollnachrichten limitieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Limitiere Vergleiche" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" @@ -575,74 +703,79 @@ msgstr "" "Limitiere Vergleiche auf %{limit.num} Pakete pro %{limit." "unit}%{limit.burst? Häufung %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Eingeschränktes Masquerading aktiviert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "Limitiere Verkehrsvergleiche auf die angegebene Rate." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "Loopback Quell-IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" "MASQUERADE - Automatisch auf IP-Adresse der ausgehenden Schnittstelle " "umschreiben" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSS Korrektur" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "NAT aktivieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Filter" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "DSCP selektieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Nach ICMP-Typ filtern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "Gerät selektieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "Selektiert an die angegebene IP-Adresse gerichteten Verkehr." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "Selektiert an den angegeben Port oder Port-Bereich gerichteten Verkehr." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" "Selektiert weitergeleiteten Verkehr von dieser IP oder diesem IP-Bereich." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" "Selektiert weitergeleiteten Verkehr vom angegebenem Quellport oder " "Portbereich." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "Helfer selektieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -650,32 +783,40 @@ msgstr "" "Eingehende Verbindungen filtern welche an den angegebenen Port oder " "Portbereich auf dem lokalen Gerät gerichtet sind" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "Erfasse Markierung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "Selektiere Verkehr welcher den angegebenen Tracking-Helfer benutzt." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" "Selektiert Verkehr mit einer spezifischen Firewall-Markierung oder einem " "Bereich von Markierungen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" "Selektiert weitergeleiteten Verkehr welcher die angegebene " "Netzwerkschnittstelle benutzt." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "Selektiere Verkehr welcher die angegebene DSCP-Markierung trägt." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maximale Einträge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maximale Länge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -684,22 +825,22 @@ msgstr "" "jedes Mal erhöht, wenn das oben genannte Limit nicht erreicht wird, bis zur " "hier angegeben Anzahl." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Montag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Monatstage" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "NAT-Regeln" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -707,26 +848,40 @@ msgstr "" "NAT-Regeln erlauben eine detaillierte Kontrolle über die verwendete Quell-IP-" "Adresse für ausgehenden oder weitergeleiteten Verkehr." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" -msgstr "Name" +msgstr "Nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netzmaske" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Keine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nicht vollständig kompatibel mit QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Selektiert nur Traffic der an die angegebene IP-Adresse gerichtet ist." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Selektiert nur Traffic von den angegebenen MAC-Adressen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Selektiert nur Traffic vom angebenem Quell-IP-Adressbereich." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -734,29 +889,46 @@ msgstr "" "Nur eingehenden Datenverkehr, der vom angegebenen Quellport oder Portbereich " "des Client-Host stammt, selektieren" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "Ausgehende Schnittstelle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Ausgehende Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Ausgehend" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Paket-Feld Übereinstimmung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Übereinstimmende Paketfelder.
Syntax: direction_datatype. e." +"g.: src_port, dest_net.
Richtung: src, dst. " +"Datentypen: ip, port, mac, net, set.
Richtungspräfix ist " +"optional.
*Hinweis: Datentyp set wird von fw4 nicht " +"unterstützt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" "Gibt zusätzliche Kommandozeilenargumente an iptables weiter. Mit Vorsicht " "benutzen!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -771,12 +943,16 @@ msgstr "" "führen können, dass der Firewall-Regelsatz außer Funktion gesetzt wird und " "alle Dienste vollständig offengelegt werden." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Pfad zu Datei mit CIDRs, Subnetzen, Host IPs, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Portweiterleitungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -784,77 +960,90 @@ msgstr "" "Portweiterleitungen ermöglichen es entfernten Rechnern im Internet auf " "bestimmte Computer oder Dienste im lokalen LAN zuzugreifen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Port-Bereich" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Gefilterte Verbindungen an den angegeben Port auf dem internen Host " "weiterleiten" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Gefilterte Verbindungen an den angegeben internen Host weiterleiten" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" -"Erfordert Hardware-NAT-Unterstützung. (Zumindest für mt7621 implementiert)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Verweis auf externes Set" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Reflection-Zonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Erfordert Hardware-NAT-Unterstützung." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "NAT auf die angegebenen Ziel-Subnetze beschränken" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "NAT auf die angegebenen Quell-Subnetze beschränken" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "Beschränke auf Adressfamilie" +msgstr "Auf Adressfamilie beschränken" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "IP-Adresse umschreiben" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "Selektierten Verkehr auf die angegebene Quell-IP-Adresse umschreiben." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "Selektierten Verkehr auf den angegebenen Quell-Port bzw. Port-Bereich " "umschreiben." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Port umschreiben" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "Routing/NAT-Beschleunigung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - Umschreiben auf spezifische Quell-IP oder Port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Samstag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "Markierung setzen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -863,40 +1052,40 @@ msgstr "" "ist Wert[/Maske]. Wenn eine Maske spezifiziert ist, werden nur die " "korrespondierenden Bits des Markierungswertes verändert." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Softwarebasierte Auslagerung von Routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Softwarebasiertes Offloading von Routing/NAT." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Beschleunigte Flusskontrolle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Quell-IP-Adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Quell-MAC-Adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Quelladresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Quellport" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Quell-Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -904,7 +1093,7 @@ msgstr "" "Gibt an, ob diese Verkehrsregel an eine spezifische Eingangs- oder " "Ausgangsschnittstelle gebunden wird." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -912,32 +1101,36 @@ msgstr "" "Gibt an, ob die externe oder die interne IP-Adresse für reflektierten " "Verkehr genutzt wird." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Startdatum (JJJJ-MM-TT)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Startzeit (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Startzeit (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Enddatum (JJJJ-MM-TT)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Stoppzeit (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stoppzeit (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Speichermethode" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Sonntag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." @@ -945,7 +1138,7 @@ msgstr "" "Die existierende Firewall-Konfiguration muss geändert werden damit LuCI " "richtig funktioniert." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -953,8 +1146,8 @@ msgstr "" "Die Firewall erstellt Netzwerkzonen über bestimmte Netzwerkschnittstellen um " "den Netzwerk-Traffic zu trennen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -972,7 +1165,7 @@ msgstr "" "nicht zusätzlich die Erlaubnis, auch von WAN nach LAN " "weiterzuleiten." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -987,22 +1180,30 @@ msgstr "" "dieser Zone zu. Covered networks definiert welche der verfügbaren " "Netzwerke zu dieser Zone gehören." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Donnerstag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Zeitbeschränkungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Zeit ist UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Zeitbeschränkungen sind aktiviert für diese Regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Zeitüberschreitung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" "Nach %{dest}%{dest_device?, Schnittstelle %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" +"var>}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}
}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" "Nach %{dest}%{dest_device?, über Schnittstelle %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" +"var>}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}
}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -"Nach %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" +"Nach %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "Tracking-Helfer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Traffic-Regeln" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Traffic-Regeln bestimmen den Fluss der Pakete zwischen verschiedenen Zonen, " "zum Beispiel um Traffic zwischen bestimmten Rechnern zu unterbinden oder um " "WAN-Ports auf dem Router zu öffnen." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Dienstag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Inhalt kann nicht gespeichert werden: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Einheit: Sekunden. Voreinstellung 0 bedeutet der Eintrag wird " +"dauerhaft hinzugefügt.
Maximaler Wert: 2147483 Sekunden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "Unbekannter oder nicht installierter Tracking-Helfer \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "Unbenannte NAT-Regel" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Unbenannte Portweiterleitung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Unbennante Regel" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Unbenanntes Set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Unbenannte Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "Unbekanntes Protokoll" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " @@ -1108,15 +1321,21 @@ msgstr "" "Sektionen konvertiert und die Firewall wird neu gestartet um die geänderte " "Konfiguration anzuwenden." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Externe IP-Adresse nutzen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Interne IP-Adresse nutzen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Benutze ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1124,7 +1343,7 @@ msgstr "" "Diese Option verwenden, um den Zonenverkehr nach rohen, nicht uci-" "verwalteten Netzwerkgeräten zu klassifizieren." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1132,456 +1351,329 @@ msgstr "" "Diese Option verwenden, um den Zonenverkehr nach Quell- oder Zielsubnetz " "anstelle von Netzwerken oder Geräten zu klassifizieren." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "Gültige Firewall-Markierung benötigt" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Mittwoch" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Wochentage" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "Firewallmarkierung XOR-en" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "Markierungen XOR-en" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Firewall4 ist auf Ihrem Gerät nicht aktiviert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Firewall4 ist auf Ihrem Gerät aktiviert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zone ⇒ Weiterleitungen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zonen" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonen, aus denen Reflection-Regeln erstellt werden sollen. Wenn nicht " +"festgelegt, wird nur die Zielzone verwendet." + # Die richtige Übersetzung von ACCEPT im Firewallkontext ist nicht "Annehmen" sondern "Zulassen". Man kann ja keinen # ausgehenden Traffic annehmen. -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "zulassen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" -msgstr "beliebig" +msgstr "alle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "beliebige Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "beliebig/alle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "Firewallmarkierung anwenden" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "Tracking-Helfer zuordnen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "Automatisch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "Bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Bitmap ist nur IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "Tag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Ziel IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Ziel MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Ziel (Sub)netz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Ziel Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Ziel ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "nicht umschreiben" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "nicht verfolgen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "verwerfen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"Firewall4 unterstützt die Referenzierung und Erzeugung von IP sets, um die " +"Übereinstimmung mit großen Adresslisten zu vereinfachen, ohne dass für jede " +"Adresse eine eigene Regel erzeugt werden muss. Portbereiche in ipsets werden " +"von Firewall4 nicht unterstützt.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "vonPort-bisPort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "Hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "Stunde" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-Adr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Zur Verwendung mit Übereinstimmungs-Datentypen: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "Liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-Addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macAdr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "Minute" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (Sub-)Netz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "zurückweisen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "Sekunde" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Quell-ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Quell-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Quell-MAC-Adr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Quell-(sub)netz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Quell-Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "dieses Gerät" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "diese neue Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "unlimitiert" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "unspezifiziert" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "bis zu 65536 Einträgen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "gültige Firewall-Markierung" -#~ msgid "%s in %s" -#~ msgstr "%s in %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s mit %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s in %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d Pkte. pro %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d Pkte. pro %s, Häufung %d Pkte." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s und limitieren auf %s" - -#~ msgid "Accept forward" -#~ msgstr "Erlaubte Weiterleitung" - -#~ msgid "Accept input" -#~ msgstr "Eingang akzeptieren" - -#~ msgid "Accept output" -#~ msgstr "Ausgang akzeptieren" - -#~ msgid "Destination IP address" -#~ msgstr "Ziel IP-Adresse" - -#~ msgid "Discard forward" -#~ msgstr "Weiterleiten verwerfen" - -#~ msgid "Discard input" -#~ msgstr "Eingang verwerfen" - -#~ msgid "Discard output" -#~ msgstr "Ausgang verwerfen" - -#~ msgid "Do not rewrite" -#~ msgstr "Nicht umschreiben" - -#~ msgid "Do not track forward" -#~ msgstr "Weiterleitung nicht verfolgen" - -#~ msgid "Do not track input" -#~ msgstr "Eingang nicht verfolgen" - -#~ msgid "Do not track output" -#~ msgstr "Ausgang nicht verfolgen" - -#~ msgid "Forward to" -#~ msgstr "Weiterleiten an" - -#~ msgid "From %s in %s" -#~ msgstr "Von %s in %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Von %s in %s mit Quell-%s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Von %s in %s mit Quell-%s und %s" - -#~ msgid "From %s on this device" -#~ msgstr "Von %s auf dieses Gerät" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "Von %s auf diesem Gerät mit Quelle %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "Von %s auf dieses Gerät mit Quelle %s und %s" - -#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" -#~ msgstr "Von %{ipaddr?:beliebigen Hosts} %{port?mit Quell-%{port}}" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "IP-Bereich" - -#~ msgid "IPs" -#~ msgstr "IPs" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MACs" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Softwarebasierte Auslagerung von Routing/NAT" #~ msgid "" -#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " -#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Selektiere %{protocol?%{family}-%{protocol} Verkehr:jeglichen %{family}-" -#~ "Verkehr} %{mark?mit Firewall-Markierung %{mark}}" - -#~ msgid "Network" -#~ msgstr "Netzwerk" - -#~ msgid "Refuse forward" -#~ msgstr "Weiterleiten ablehnen" - -#~ msgid "Refuse input" -#~ msgstr "Eingang ablehnen" - -#~ msgid "Refuse output" -#~ msgstr "Ausgang ablehnen" - -#~ msgid "Rewrite to" -#~ msgstr "Umschreiben auf…" - -#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" -#~ msgstr "" -#~ "Umschreiben auf %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" - -#~ msgid "Rewrite to outbound device IP" -#~ msgstr "Umschreiben auf ausgehende Schnittstellen-IP" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Zu %s an %s auf diesem Gerät" - -#~ msgid "To %s in %s" -#~ msgstr "Zu %s in %s" - -#~ msgid "To %s on this device" -#~ msgstr "Zu %s auf diesem Gerät" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Zu %s, %s in %s" +#~ "Ativar a conversão de endereços e portas de rede (NAT ou NAPT) para o " +#~ "tráfego de saída nessa zona. Isto é normalmente ativado na zona wan." #~ msgid "" -#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " -#~ "%{device?egress device %{device}}" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "Zu %{ipaddr?:beliebigem Host} %{port?an %{port}} %{zone?über Zone " -#~ "%{zone}} %{device?ausgehende Schnittstelle %{device}}" - -#~ msgid "Via %s" -#~ msgstr "Über %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Über %s an %s" - -#~ msgid "any host" -#~ msgstr "beliebiger Rechner" - -#~ msgid "any router IP" -#~ msgstr "beliebige Router-IP" - -#~ msgid "not" -#~ msgstr "nicht" - -#~ msgid "port" -#~ msgstr "Port" - -#~ msgid "ports" -#~ msgstr "Ports" - -#~ msgid "type" -#~ msgstr "Typ" - -#~ msgid "types" -#~ msgstr "Typen" - -#~ msgid "Force connection tracking" -#~ msgstr "Connectiontracking erzwingen" - -#~ msgid "Disable" -#~ msgstr "Deaktivieren" - -#~ msgid "Restart Firewall" -#~ msgstr "Firewall neu starten" - -#~ msgid "Rule is disabled" -#~ msgstr "Regel ist deaktiviert" - -#~ msgid "Rule is enabled" -#~ msgstr "Regel ist aktiviert" - -#~ msgid "Add" -#~ msgstr "Hinzufügen" - -#~ msgid "Add and edit..." -#~ msgstr "Hinzufügen und bearbeiten..." - -#~ msgid "External zone" -#~ msgstr "Externe Zone" - -#~ msgid "New SNAT rule" -#~ msgstr "Neue SNAT-Regel" - -#~ msgid "New forward rule" -#~ msgstr "Neue Weiterleitungsregel" - -#~ msgid "New input rule" -#~ msgstr "Neue eingehende Regel" - -#~ msgid "New port forward" -#~ msgstr "Neue Portweiterleitung" - -#~ msgid "New source NAT" -#~ msgstr "Neues SNAT" - -#~ msgid "Open ports on router" -#~ msgstr "Ports auf dem Router öffnen" - -#~ msgid "Other..." -#~ msgstr "Anderes..." - -#~ msgid "To source IP" -#~ msgstr "Zu Quell-IP" - -#~ msgid "To source port" -#~ msgstr "Zu Quell-Port" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Unbenannter Eintrag)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Unbenannte Regel)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(Unbennanter SNAT-Eintrag)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Weiterleitungen zwischen Zonen" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Selektiert weitergeleiteten Verkehr nach den angegebenen Ziel-Ports." +#~ "Weitergeleiteter IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }" +#~ "%{item.name}}}%{mark?, Markierung %{mark.val}}" #~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "Selektiert eingehenden Verkehr nach den angegebenen Quell-Ports." - -#~ msgid "Rewrite matched traffic to the given address." +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" #~ msgstr "" -#~ "Schreibe selektierten Verkehr auf die angegebene Quell-IP-Adresse um." - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Schreibe selektierten Verkehr auf den angegebenen Qull-Port um. Kann leer " -#~ "gelassen werden um nur die IP-Adresse umzuschreiben." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Schreibe um auf Quell-%s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Schreibe um auf Quell-%s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "SNAT-IP-Adresse" - -#~ msgid "SNAT port" -#~ msgstr "SNAT-Port" - -#~ msgid "Source NAT" -#~ msgstr "Source NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "Source NAT ist eine spezifische From von NAT, welche volle Kontrolle über " -#~ "die verwendete Quell-IP-Adresse für ausgehenden Verkehr zulässt, zum " -#~ "Beispiel um mehrere WAN-IP-Adressen auf interne Subnetze abzubilden." - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "Startzeit (hh:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "Endzeit (hh:mm:ss)" - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der " -#~ "Portweiterleitung. In den meisten Fällen ist es unnötig die Eigenschaften " -#~ "zu ändern." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der " -#~ "Verkehrsregel, zum Beispiel die Selektion nach Quell- und Zieladressen." - -#~ msgid "Unnamed SNAT" -#~ msgstr "Unbennante SNAT-Regel" - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Durch die Auswahl von \"-- benutzerdefiniert --\" könnene mehrere Werte " -#~ "durch Leerzeichen getrennt angegeben werden." - -#~ msgid "Zone %q" -#~ msgstr "Zone %q" +#~ "Eingehender IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }%{item." +#~ "types?%{item.name}ICMP mit Typen %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, Helfer %{helper.inv?%{helper.val}:" +#~ "%{helper.val}}}" diff --git a/luci-app-firewall/po/el/firewall.po b/luci-app-firewall/po/el/firewall.po index 3dae7109a..e01595bd0 100644 --- a/luci-app-firewall/po/el/firewall.po +++ b/luci-app-firewall/po/el/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-11-09 08:59+0000\n" +"Last-Translator: Mac Mac \n" "Language-Team: Greek \n" "Language: el\n" @@ -12,358 +12,417 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.8.2\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- προσθήκη IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" +msgstr "-- προσθήκη MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"Accept %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "" +msgstr "Prevent source rewrite" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" -msgstr "Ενέργεια" +msgstr "Δράση" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Ρυθμίσεις για προχωρημένους" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Οποιοδήποτε" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Προσαρμοσμένοι Κανόνες" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Διεύθυνση προορισμού" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Θύρα προορισμού" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Ζώνη προορισμού" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Όνομα συσκευής" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Αγνόηση μη-έγκυρων πακετών" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Ενεργοποίηση" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 -msgid "Enable NAT Loopback" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 #, fuzzy -msgid "Enable SYN-flood protection" -msgstr "Προστασία SYN-flood" +msgid "Enable NAT Loopback" +msgstr "Ενεργοποιήστε το NAT Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Ενεργοποιήστε την προστασία SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" +msgstr "Ενεργοποιήστε τη σύνδεση σε αυτήν τη ζώνη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Εξωτερική διεύθυνση IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Εξωτερική θύρα" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Επιπλέον παράμετροι" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Τείχος προστασίας" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Τείχος προστασίας - Προσαρμοσμένοι Κανόνες" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Τείχος προστασίας - Προώθηση Θυρών" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Τείχος προστασίας - Κανόνες Κίνησεις" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Τείχος προστασίας - Ρυθμίσεις Ζώνης" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Προώθηση" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Γενικές Ρυθμίσεις" +msgstr "Γενικές ρυθμίσεις" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 και IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Μόνο IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Μόνο IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Είσοδος" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" -msgstr "Εσωτερική διεύθυνση" +msgstr "Εσωτερική διεύθυνση IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 #, fuzzy msgid "Internal port" msgstr "Εξωτερική θύρα" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Εσωτερική ζώνη" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Περιορισμός καταγραφών συστήματος" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 #, fuzzy msgid "MSS clamping" msgstr "Περιορισμός MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" -msgstr "Όνομα" +msgstr "Ονομα" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Έξοδος" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -657,168 +814,190 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Προώθηση Θυρών" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Πρωτόκολλο" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 #, fuzzy msgid "Source IP address" msgstr "Διεύθυνση MAC πηγής" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 #, fuzzy msgid "Source address" msgstr "Διεύθυνση MAC πηγής" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Θύρα πηγής" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 #, fuzzy msgid "Source zone" msgstr "Θύρα πηγής" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" -msgstr "" +msgstr "Κυριακή" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -826,8 +1005,8 @@ msgstr "" "Το τείχος προστασίας δημιουργεί ζώνες πάνω στις διεπαφές δικτύου για να " "ελέγχει την δικτυακή κίνηση." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -837,7 +1016,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -846,22 +1025,30 @@ msgid "" "networks
specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" -msgstr "" +msgstr "Πέμπτη" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" -msgstr "" +msgstr "Χρονικοί Περιορισμοί" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" -msgstr "" +msgstr "Ώρα σε UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Οι χρονικοί περιορισμοί είναι ενεργοποιημένοι για αυτόν τον κανόνα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Τέλος χρόνου" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" -msgstr "" +msgstr "Βοηθός παρακολούθησης" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" -msgstr "" +msgstr "Κανόνες κυκλοφορίας" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" +"Οι κανόνες κυκλοφορίας ορίζουν πολιτικές για πακέτα που ταξιδεύουν μεταξύ " +"διαφορετικών ζωνών, για παράδειγμα μια απόρριψη κίνησης μεταξύ ορισμένων " +"κεντρικών υπολογιστών ή για άνοιγμα θυρών WAN στο δρομολογητή." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" -msgstr "" +msgstr "Τρίτη" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "Ανώνυμο NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" +msgstr "Κανόνας χωρίς όνομα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 -msgid "Zone ⇒ Forwardings" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Ζώνη ⇒ Διαβιβάσεις" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Ζώνες" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "αποδοχή" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" -msgstr "" +msgstr "οποιαδήποτε" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "αγνόηση" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "απόρριψη" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 -msgid "valid firewall mark" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#~ msgid "%s%s with %s" -#~ msgstr "%s%s με %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d πκτ. ανά %s" - -#~ msgid "Destination IP address" -#~ msgstr "Διεύθυνση IP προορισμού" - -#~ msgid "From %s in %s" -#~ msgstr "Απο %s στο %s" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "Force connection tracking" -#~ msgstr "Επιβολή παρακολούθησης σύνδεσης" - -#~ msgid "Add" -#~ msgstr "Προσθήκη" - -#~ msgid "Add and edit..." -#~ msgstr "Προσθήκη και επεξεργασία..." - -#~ msgid "Other..." -#~ msgstr "Άλλο..." +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/es/firewall.po b/luci-app-firewall/po/es/firewall.po index 55c4b5aa3..f0b3feb96 100644 --- a/luci-app-firewall/po/es/firewall.po +++ b/luci-app-firewall/po/es/firewall.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-26 12:41+0000\n" +"PO-Revision-Date: 2024-10-25 20:19+0000\n" "Last-Translator: Franco Castillo \n" "Language-Team: Spanish \n" @@ -12,74 +12,83 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.8.2-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" "%{src?%{dest?Reenvío:Entrada}:Salida} %{ipv6?%{ipv4?IPv4 y " -"IPv6:IPv6}:IPv4}%{proto?, protocolo %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP con tipos %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, marca %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" -"%{dscp.val}}}%{helper?, ayudante %{helper.inv?%{helper." -"val}:%{helper.val}}}" +"IPv6:IPv6}:IPv4}%{proto?, protocolo " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP con tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, marca " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, ayudante %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "-- Añadir IP --" +msgstr "-- añadir IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" -msgstr "-- Añadir MAC" +msgstr "-- añadir MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "Aceptar %{src?%{dest?reenvío:entrada}:" "salida}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" "Prevenir la reescritura de la fuente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -"Reenviar a %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? puerto %{dest_port}}" +"Reenviar a %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? puerto %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" "Descartar %{src?%{dest?reenvío:entrada}:" "salida}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" @@ -87,29 +96,29 @@ msgstr "" "Asignar DSCP clasificación %{set_dscp}" "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -"Asignar conntrack ayudante %{set_helper}" +"Asignar conntrack ayudante " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" -msgstr "" -"%{set_mark?Asignar:XOR} marca de firewall " +"%{set_mark?Assign:XOR} firewall mark " "%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Asignar:XOR} marca de " +"cortafuegos%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -"Reescribir automáticamente IP de " +"Reescribir automáticamente la IP de " "origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" @@ -117,14 +126,14 @@ msgstr "" "No seguir %{src?%{dest?reenvío:entrada}:" "salida}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" "Rechazar %{src?%{dest?reenvío:entrada}:" "salida}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" @@ -132,23 +141,23 @@ msgstr "" "Reescribir estáticamente a origen %{snat_ip?" "IP %{snat_ip}} %{snat_port?puerto %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "¡Se debe especificar una IP de reescritura!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ACEPTAR - Desactivar reescritura de direcciones" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Acción" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -158,7 +167,7 @@ msgstr "" "tráfico de destino de la zona, p.e. -p tcp --dport 443 para que " "solo coincida con el tráfico HTTPS saliente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -167,37 +176,49 @@ msgstr "" "tráfico de origen de zona, p.e. -p tcp --sport 443 para que " "solo coincida con el tráfico HTTPS entrante." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Configuración avanzada" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Familia de direcciones, la dirección IP interna debe coincidir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"La familia de direcciones, la dirección de origen, la dirección de destino, " +"la dirección IP de reescritura debe coincidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Ajustes avanzados" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "Permitir tráfico \"inválido\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Permitir reenvío desde zonas de origen:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Permitir reenvío a zonas de destino:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Cualquiera" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Cualquier día" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -207,101 +228,110 @@ msgstr "" "conexiones establecidas. El formato es el valor [/ máscara]. Si se " "especifica una máscara, esos bits establecidos en la máscara se ponen a cero." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "Aplique la clase o valor DSCP dado a las conexiones establecidas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" "Asigne el asistente de seguimiento de conexión especificado al tráfico " "coincidente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Asignación automática de ayuda" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" "Asigna automáticamente ayudantes de conntrack según el protocolo de tráfico " "y el puerto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentario" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Configuraciones de Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Ayudantes de Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "Los contenidos han sido guardados." +msgstr "Se han guardado los contenidos." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Continuar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contadores" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Interfaces cubiertas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Redes cubiertas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Subredes cubiertas" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Reglas personalizadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" "Las reglas personalizadas le permiten ejecutar comandos de iptables que no " -"están disponibles en el marco del firewall. Los comandos se ejecutarán tras " -"cualquier reinicio del FIrewall, justo tras haber cargado el conjunto de " -"reglas predeterminadas." +"están disponibles en el marco del Cortafuegos. Los comandos se ejecutarán " +"tras cualquier reinicio del Cortafuegos, justo tras haber cargado el " +"conjunto de reglas predeterminadas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "Clasificación DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "Marca DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "Marca DSCP requerida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Dirección de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Puerto de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Zona de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Nombre del dispositivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -310,120 +340,156 @@ msgstr "" "estado conntrack inválido. Esto puede ser necesario para " "configuraciones complejas de rutas asimétricas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Descartar paquetes inválidos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Activar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "Activar bucle NAT" +msgstr "Activar bucle de retorno de NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Activar protección contra inundaciones SYN" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Activar registro en esta zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Activa la dirección de red y la traducción de puertos IPv4 (NAT4 o NAPT4) " +"para el tráfico saliente en esta zona. Esto normalmente está activo en la " +"zona wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Activa la dirección de red y la traducción de puertos IPv6 (NAT6 o NAPT6) " +"para el tráfico saliente en esta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Activado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Activa el seguimiento del conteo de paquetes y bytes para el conjunto." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "Esperando: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Característica experimental. No es totalmente compatible con QoS/SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" "Elige explícitamente los ayudantes de seguimiento de conexión permitidos " "para el tráfico de zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Dirección IP externa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Puerto externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Argumentos extra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Argumentos de destino adicionales" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Argumentos adicionales de iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Argumentos fuente adicionales" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familia" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" -msgstr "Firewall" +msgstr "Cortafuegos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" -msgstr "Firewall - Reglas personalizadas" +msgstr "Cortafuegos - Reglas personalizadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Cortafuegos: Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" -msgstr "Firewall - Reglas de NAT" +msgstr "Cortafuegos - Reglas de NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "Firewall - Reenvío de puertos" +msgstr "Cortafuegos - Reenvío de puertos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "Firewall - Reglas de tráfico" +msgstr "Cortafuegos - Reglas de tráfico" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "Firewall - Configuración de la zona" +msgstr "Cortafuegos - Ajustes de Zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" -msgstr "Migración de configuración de Firewall" +msgstr "Migración de configuración del Cortafuegos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Tipo de descarga de flujo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Reenviar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -"Reenviar IPv4%{proto?, protocolo %{proto#%{next?, }%{item.name}IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocolo %{proto#%{next?, }%{item.name}}}%{mark?, marca %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Viernes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}%{src_port?, " "puerto %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#" -"%{next?, }%{item.ival}}}" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 -msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -msgstr "" -"Desde %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, puerto %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " -"MAC %{src_mac#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 -msgid "General Settings" -msgstr "Configuración general" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Desde %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item." +"ival}}}%{src_port?, puerto %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Ajustes generales" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Conceder acceso a la configuración del Cortafuegos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Descarga basada en hardware para el enrutamiento con/sin NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "Descarga de flujo por hardware" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (rango)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Redes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Redes/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 e IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "Sólo IPv4" +msgstr "Solo IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Enmascarar la IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "Sólo IPv6" +msgstr "Solo IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Dispositivo de entrada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" -"IPv4 entrante%{proto?, protocolo %{proto#%{next?, }%{item.types?%{item.name}ICMP con " -"tipos %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}}%{helper?, ayudante %{helper.inv?" -"%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Incluir archivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Entrada %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Tamaño de hash inicial" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Entrada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Dirección IP interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Puerto interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Zona interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Reenvío dentro de la zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Marca DSCP inválida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Valor límite no válido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nombre del conjunto no válido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Límite de ráfaga" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Limitar registro de mensajes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Limitar coincidencia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" @@ -577,72 +704,78 @@ msgstr "" "Limitar coincidencia a %{limit.num} paquetes por %{limit." "unit}%{limit.burst? interrumpir %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Enmascaramiento limitado activado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "Limita el tráfico que coincide con la velocidad especificada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "IP de origen de bucle invertido" +msgstr "IP de origen de bucle de retorno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "MASQUERADE - Reescribe automáticamente a la interfaz IP saliente" +msgstr "" +"MASQUERADE - Reescribir automáticamente a la IP de la interfaz de salida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" -msgstr "Fijado de MSS" +msgstr "Sujeción MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Enmascaramiento" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Coincidir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "Coincidir DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Coincidir con tipo ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "Dispositivo de coincidencia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "Haga coincidir el tráfico reenviado dirigido a la dirección IP dada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "Haga coincidir el tráfico reenviado dirigido al puerto de destino o rango de " "puertos dados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "Haga coincidir el tráfico reenviado desde esta IP o rango." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" "Haga coincidir el tráfico reenviado que se origina en el puerto fuente o " "rango de puertos dados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "Ayudante de partido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -650,34 +783,42 @@ msgstr "" "Coincidir con tráfico de entrada dirigido al puerto o rango de puertos " "destino en este host" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "Marca de partido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" "Haga coincidir el tráfico con el ayudante de seguimiento de conexión " "especificado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -"Coincide con una marca de firewall específica o un rango de marcas " +"Coincide con una marca de Cortafuegos específica o un rango de marcas " "diferentes." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" "Coincide con el tráfico reenviado utilizando el dispositivo de red saliente " "especificado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "Coincide con el tráfico que lleva la marca DSCP especificada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Máximo de entradas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Longitud máxima" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -686,49 +827,63 @@ msgstr "" "recarga en uno cada vez que no se alcanza el límite especificado " "anteriormente, hasta este número." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Lunes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Días del mes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "Reglas de NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -"Las reglas de NAT permiten un control detallado sobre la IP de origen para " -"el tráfico saliente o reenviado." +"Las reglas NAT permiten un control detallado sobre la IP de origen que se " +"utilizará para el tráfico saliente o reenviado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nombre" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Máscara de red" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Ninguno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "No es totalmente compatible con QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Coincidir sólo con tráfico de entrada a esta dirección IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Coincidir sólo con tráfico de entrada desde estas MACs." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Coincidir sólo con tráfico de entrada desde esta IP o rango." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -736,27 +891,44 @@ msgstr "" "Solo coincida con el tráfico entrante que se origina desde el puerto de " "origen o el rango de puertos en el host del cliente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "Dispositivo de salida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Zona de salida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Salida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Emparejar los paquetes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Campos de paquetes para hacer coincidir.
Sintaxis: " +"direction_datatype. p.e.: src_port, dest_net.
Direcciones: src, dst. Tipos de datos: ip, port, mac, " +"net, set.
Los prefijos de dirección son opcionales.
*Nota: " +"el tipo de dato set no es compatible con fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "Ingrese argumentos adicionales a iptables. ¡Utilícelo con cuidado!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -768,95 +940,112 @@ msgstr "" "tráfico de origen y destino permite hacer coincidir paquetes basados en " "otros criterios que no sean interfaces o subredes. Estas opciones se deben " "usar con extremo cuidado, ya que los valores inválidos pueden hacer que el " -"conjunto de reglas del firewall se rompa, exponiendo completamente todos los " -"servicios." +"conjunto de reglas del cortafuegos se rompa, exponiendo completamente todos " +"los servicios." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Ruta al archivo de CIDR, subredes, IP de host, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Reenvío de puertos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -"El reenvío de puertos permite a ordenadores remotos en internet conectar a " -"un ordenador o servicio específico en la LAN privada." +"El reenvío de puertos permite que los computadores remotos en Internet se " +"conecten a un computador o servicio específico dentro de la LAN privada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Rango de puertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protocolo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Redirigir el tráfico de entrada que coincida al puerto dado en el host " "interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" "Redirigir el tráfico de entrada que coincida al host interno especificado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" -"Requiere soporte de NAT por hardware. Implementado al menos para mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consulta el Conjunto externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zonas de reflexión" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Requiere soporte de NAT por hardware." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Restringir enmascaramiento a las subredes destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Restringir enmascaramiento a las subredes origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "Restringir a la familia de direcciones" +msgstr "Restringir para dirigirse a la familia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "Reescribir dirección IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" "Reescribe el tráfico coincidente a la dirección IP de origen especificada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "Reescribe el tráfico coincidente al puerto de origen o rango de puertos " "especificados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Reescribir puerto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "Enrutamiento/NAT Offloading" +msgstr "Enrutamiento/Descarga NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - Reescribe a una fuente específica IP o puerto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Sábado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "Establecer marca" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -865,40 +1054,40 @@ msgstr "" "es el valor [/máscara]. Si se especifica una máscara, sólo se modifican los " "bits establecidos en la máscara." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Descarga basada en software para enrutamiento/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Descarga basada en software para el enrutamiento/NAT." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Descarga de flujo por software" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Dirección IP de origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Dirección MAC de origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Dirección de origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Puerto de origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zona de origen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -906,7 +1095,7 @@ msgstr "" "Especifica si se debe vincular esta regla de tráfico a un dispositivo de red " "entrante o saliente específico." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -914,49 +1103,53 @@ msgstr "" "Especifica si se debe usar la dirección IP externa o interna para el tráfico " "reflejado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Fecha de inicio (aaaa-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Hora de inicio (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Hora de inicio (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Fecha de finalización (aaaa-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Hora de finalización (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Hora de finalización (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Método de almacenamiento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Domingo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -"La configuración de firewall existente debe cambiarse para que LuCI funcione " -"correctamente." +"La configuración del cortafuegos existente debe cambiarse para que LuCI " +"funcione correctamente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -"El Firewall crea zonas sobre sus interfaces de red para controlar el flujo " -"del tráfico." +"El cortafuegos crea zonas sobre tus interfaces de red para controlar el " +"flujo de tráfico de la red." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -973,7 +1166,7 @@ msgstr "" "la LAN a la WAN no implica permiso para reenviar desde la WAN a la " "LAN también." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -982,28 +1175,36 @@ msgid "" "networks
specifies which available networks are members of this zone." msgstr "" "Esta sección define propiedades comunes de %q. Las opciones de entrada y la salida marcan las políticas por defecto para el tráfico " -"que entra y deja esta zona mientras que la opción reenvío describe " -"la política para tráfico reenviado desde diferentes redes en la zona. " -"Redes cubiertas especifican qué redes disponibles son miembros de " +"em> y salida marcan las políticas por defecto para el tráfico que " +"entra y sale de esta zona mientras que la opción reenviar describe " +"la política para tráfico reenviado entre diferentes redes dentro de la zona. " +"Redes cubiertas especifica qué redes disponibles son miembros de " "esta zona." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Jueves" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Restricciones de tiempo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Tiempo en UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Las restricciones de tiempo están activadas para esta regla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tiempo de espera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -"A %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, puerto %{dest_port#%{next?, }%{item." +"ival}}}%{dest_port?, puerto %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "Ayudante de seguimiento" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Reglas de tráfico" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -"Las reglas de tráfico definen políticas para los paquetes que viajan entre " +"Las reglas de tráfico definen políticas para paquetes que viajan entre " "diferentes zonas, por ejemplo, para rechazar el tráfico entre ciertos hosts " "o para abrir puertos WAN en el enrutador." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Martes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "No se puede guardar el contenido: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unidad: segundos. El 0 predeterminado significa que la entrada " +"se agrega permanentemente al conjunto.
Máx.: 2147483 segundos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "Ayudante de Conntrack desconocido o no instalado \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "NAT sin nombre" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Reenvío sin nombre" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Regla sin nombre" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Conjunto sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Zona sin nombre" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "Protocolo no reconocido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" "Al presionar \"Continuar\", las secciones de \"redireccionamiento\" con " -"\"SNAT\" de destino se convertirán en secciones \"nat\" y el firewall se " +"\"SNAT\" de destino se convertirán en secciones \"nat\" y el cortafuegos se " "reiniciará para aplicar la configuración actualizada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Usar dirección IP externa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Usar dirección IP interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Usar ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1125,7 +1344,7 @@ msgstr "" "Use esta opción para clasificar el tráfico de zona por raw, dispositivos de " "red no administrados uci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1133,468 +1352,326 @@ msgstr "" "Use esta opción para clasificar el tráfico de zona por subred de origen o " "destino en lugar de redes o dispositivos." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "Se requiere una marca de firewall válida" +msgstr "Se requiere una marca de cortafuegos válida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Miércoles" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Días de la semana" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "Marca de firewall XOR" +msgstr "Marca de cortafuegos XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "Marca XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Su dispositivo no ejecuta firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Tu dispositivo ejecuta firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zona ⇒ Reenvíos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zonas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 -msgid "accept" -msgstr "Aceptar" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonas a partir de las cuales se crearán las reglas de reflexión. Si no está " +"configurado, solo se utiliza la zona de destino." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "aceptar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "cualquiera" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "cualquier zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 -msgid "apply firewall mark" -msgstr "aplicar marca de firewall" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "cualquiera/todos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "aplicar marca de cortafuegos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "asignar ayudante de Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 -msgid "day" -msgstr "Día" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automático" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap es solo ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "día" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Dirección MAC de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (Sub)red de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Puerto de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: conjunto de ips de destino*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "no reescribir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "No seguir" +msgstr "no seguir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" -msgstr "Descartar" +msgstr "descartar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 admite la referencia y la creación de conjuntos de IP para " +"simplificar la coincidencia de listas de direcciones grandes sin la " +"necesidad de crear una regla por elemento a coincidir. Los rangos de puertos " +"en ipsets no son compatibles con firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "de puerto-a puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" -msgstr "Hora" +msgstr "hora" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Dirección IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Para usar con los tipos de datos de iguales:*_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Dirección MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "minuto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 -msgid "reject" -msgstr "Rechazar" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (Sub)red" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "rechazar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "segundo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: IPset de origen*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Dirección MAC de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (Sub)red de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Puerto de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "este dispositivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "esta nueva zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "ilimitado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" -msgstr "Sin especificar" +msgstr "sin especificar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "hasta 65536 entradas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "marca de firewall válida" +msgstr "marca de cortafuegos válida" -#~ msgid "%s in %s" -#~ msgstr "%s en %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s con %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s en %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d paquetes por %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "" -#~ "%d paquetes por %s, máximo %d paquetes." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s y limitar a %s" - -#~ msgid "Accept forward" -#~ msgstr "Aceptar reenvío" - -#~ msgid "Accept input" -#~ msgstr "Aceptar entrada" - -#~ msgid "Accept output" -#~ msgstr "Aceptar salida" - -#~ msgid "Destination IP address" -#~ msgstr "Dirección IP destino" - -#~ msgid "Discard forward" -#~ msgstr "Descartar reenvío" - -#~ msgid "Discard input" -#~ msgstr "Descartar entrada" - -#~ msgid "Discard output" -#~ msgstr "Descartar salida" - -#~ msgid "Do not rewrite" -#~ msgstr "No reescribir" - -#~ msgid "Do not track forward" -#~ msgstr "No seguir reenvío" - -#~ msgid "Do not track input" -#~ msgstr "No seguir entrada" - -#~ msgid "Do not track output" -#~ msgstr "No seguir salida" - -#~ msgid "Forward to" -#~ msgstr "Reenviar a" - -#~ msgid "From %s in %s" -#~ msgstr "Desde %s en %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Desde %s en %s con origen %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Desde %s en %s con origen %s y %s" - -#~ msgid "From %s on this device" -#~ msgstr "Desde %s en este dispositivo" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "Desde %s en este dispositivo con la fuente %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "De %s en este dispositivo con la fuente %s y %s" - -#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" -#~ msgstr "Desde %{ipaddr?:cualquier host} %{puerto?con origen %{puerto}}" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "Rango de IP" - -#~ msgid "IPs" -#~ msgstr "IP" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MAC" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Descarga basada en software para enrutamiento/NAT" #~ msgid "" -#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " -#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Coincidir %{protocolo?%{familia} %{protocolo} tráfico:cualquiera " -#~ "%{familia} tráfico} %{marco?con marco de firewall %{marco}}" - -#~ msgid "Network" -#~ msgstr "Red" - -#~ msgid "Refuse forward" -#~ msgstr "Rechazar reenvío" - -#~ msgid "Refuse input" -#~ msgstr "Rechazar entrada" - -#~ msgid "Refuse output" -#~ msgstr "Rechazar salida" - -#~ msgid "Rewrite to" -#~ msgstr "Reescribe a" - -#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" -#~ msgstr "" -#~ "Reescribe a %{ipaddr?%{puerto?%{ipaddr}, %{puerto}:%{ipaddr}}:%{puerto}}" - -#~ msgid "Rewrite to outbound device IP" -#~ msgstr "Reescribir a la IP del dispositivo saliente" - -#~ msgid "To %s at %s on this device" -#~ msgstr "A %s en %s por este dispositivo" - -#~ msgid "To %s in %s" -#~ msgstr "A %s en %s" - -#~ msgid "To %s on this device" -#~ msgstr "A %s por este dispositivo" - -#~ msgid "To %s, %s in %s" -#~ msgstr "A %s, %s en %s" +#~ "Habilite la dirección de red y la traducción de puertos (NAT o NAPT) para " +#~ "el tráfico saliente en esta zona. Esto normalmente está habilitado en la " +#~ "zona wan." #~ msgid "" -#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " -#~ "%{device?egress device %{device}}" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "A %{ipaddr?:cualquier destino} %{puerto?a %{puerto}} %{zona?via zona " -#~ "%{zona}} %{dispositivo?dispositivo de salida %{dispositivo}}" - -#~ msgid "Via %s" -#~ msgstr "Vía %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Vía %s a %s" - -#~ msgid "any host" -#~ msgstr "cualquier host" - -#~ msgid "any router IP" -#~ msgstr "cualquier router IP" - -#~ msgid "not" -#~ msgstr "No" - -#~ msgid "port" -#~ msgstr "puerto" - -#~ msgid "ports" -#~ msgstr "puertos" - -#~ msgid "type" -#~ msgstr "Tipo" - -#~ msgid "types" -#~ msgstr "Tipos" - -#~ msgid "Force connection tracking" -#~ msgstr "Forzar seguimiento de conexión" +#~ "Reenviar IPv4%{proto?, protocolo %{proto#%{next?, }%{item.name}}}%{mark?, marca %{mark.val}}" #~ msgid "" -#~ "Prevent the installation of NOTRACK rules which would bypass " -#~ "connection tracking." +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" #~ msgstr "" -#~ "Evite la instalación de reglas NOTRACK que evitarían el " -#~ "seguimiento de la conexión." - -#~ msgid "Disable" -#~ msgstr "Desactivar" - -#~ msgid "Restart Firewall" -#~ msgstr "Reiniciar Firewall" - -#~ msgid "Rule is disabled" -#~ msgstr "Regla desactivada" - -#~ msgid "Rule is enabled" -#~ msgstr "Regla activada" - -#~ msgid "Add" -#~ msgstr "Añadir" - -#~ msgid "Add and edit..." -#~ msgstr "Añadir y editar..." - -#~ msgid "External zone" -#~ msgstr "Zona externa" - -#~ msgid "New SNAT rule" -#~ msgstr "Nueva regla SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Nueva regla de reenvío" - -#~ msgid "New input rule" -#~ msgstr "Nueva regla de entrada" - -#~ msgid "New port forward" -#~ msgstr "Nuevo reenvío de puerto" - -#~ msgid "New source NAT" -#~ msgstr "Nuevo origen NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Abrir puertos en el router" - -#~ msgid "Other..." -#~ msgstr "Otros..." - -#~ msgid "To source IP" -#~ msgstr "A IP origen" - -#~ msgid "To source port" -#~ msgstr "A puerto origen" - -#~ msgid "Output zone" -#~ msgstr "Zona de salida" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Entrada sin nombre)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Regla sin nombre)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(SNAT sin nombre)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Reenvío entre zonas" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Coincidir con tráfico reenviado al puerto o rango de puertos destino." - -#~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "" -#~ "Haga coincidir el tráfico entrante que se origina en el puerto de origen " -#~ "o el rango de puertos en el host del cliente." - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Reescribir el tráfico que coincida a estas direcciones." - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Reescribir el tráfico que coincida con este puerto origen. Deje en blanco " -#~ "para reescribir sólo la dirección IP." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Reescribir a origen %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Reescribir a origen %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "Dirección IP SNAT" - -#~ msgid "SNAT port" -#~ msgstr "Puerto SNAT" - -#~ msgid "Source NAT" -#~ msgstr "Origen NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "Origen NAT es una forma específica de enmascaramiento que permite el " -#~ "control fino del origen IP que se usa en el tráfico de salida por ejemplo " -#~ "para dirigir múltiples direcciones WAN a las subredes internas." - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "Hora de inicio (hh:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "Hora de finalización (hh:mm:ss)" - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Propiedades avanzadas de la entrada \"reenvío de puertos\". No suele ser " -#~ "necesario modificar esta configuración." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Esta página le permite cambiar las propiedades avanzadas de la entrada de " -#~ "la regla de tráfico, como los hosts de origen y destino coincidentes." - -#~ msgid "Unnamed SNAT" -#~ msgstr "SNAT sin nombre" - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Puede poner varios seleccionando \"-- personalizado --\" e introduciendo " -#~ "los protocolos separados por espacio." - -#~ msgid "Zone %q" -#~ msgstr "Zona %q" - -#~ msgid "traffic" -#~ msgstr "Tráfico" +#~ "IPv4 entrante%{proto?, protocolo %{proto#%{next?, }%{item.types?%{item.name}ICMP con tipos %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, ayudante %{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/fa/firewall.po b/luci-app-firewall/po/fa/firewall.po new file mode 100644 index 000000000..cea87c6f6 --- /dev/null +++ b/luci-app-firewall/po/fa/firewall.po @@ -0,0 +1,1633 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-05 08:09+0000\n" +"Last-Translator: Danial Behzadi \n" +"Language-Team: Persian \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP با انواع ICMP %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- افزودن IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- افزودن مک آدرس --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"تایید %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "جلوگیری از منبع بازنویسی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"ارسال to %{dest}%{dest_ip?آی پی " +"%{dest_ip}}%{dest_port? پورت %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"دراپ %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"اختصاص DSCP DSCP classification " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"اختصاص conntrack helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} علامت فایروال " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "باز نویسی خودکار منبع ایپی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"{src?%{dest?forward:input}:output}% رديابي نکن " + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"لغو %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"بازنویسی ایستا به منبع %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "یک IP بازنویسی شده باید مشخص شود!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "تایید - بازنویسی آدرس غیر فعال شد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "اجرا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"استدلال های خام اضافی iptables برای طبقه بندی ترافیک مقصد منطقه، به " +"عنوان مثال. -p tcp --dport 443 فقط برای مطابقت با ترافیک خروجی " +"HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"استدلال های خام اضافی iptables برای طبقه بندی ترافیک مقصد منطقه، به " +"عنوان مثال. -p tcp --dport 443 فقط برای مطابقت با ترافیک ورودی " +"HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "خانواده آدرس، آدرس IP داخلی باید مطابقت داشته باشد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"خانواده آدرس، آدرس مبدا، آدرس مقصد، آدرس IP بازنویسی باید مطابقت داشته باشند" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "تنظیمات پیشرفته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "پذیرش ترافیک \"نامعتبر\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "اجازه به جلو از مناطق منبع:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "اجازه به جلو بهمناطق مقصد:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "هر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "هر روز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"یک XOR بیتی از مقدار داده شده و مقدار علامت موجود روی اتصالات ایجاد شده " +"اعمال کنید. قالب مقدار[ / mask] است. اگر یک ماسک مشخص شده باشد، آن بیت های " +"تنظیم شده در ماسک صفر می شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "کلاس یا مقدار DSCP داده شده را برای اتصالات ایجاد شده اعمال کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "کمک ردیابی اتصال مشخص شده را به ترافیک همسان اختصاص دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "واگذاری کمک کننده خودکار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"به طور خودکار کمک های conntrack را بر اساس پروتکل ترافیک و پورت اختصاص دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "نظر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "تنظیمات Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "کمک کنندگان Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "محتویات ذخیره شده اند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "ادامه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "شمارنده ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "دستگاه های تحت پوشش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "شبکه های تحت پوشش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "زیرشبکه های تحت پوشش" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "قوانین سفارشی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"قوانین سفارشی به شما این امکان را می دهد که دستورات iptables دلخواه را اجرا " +"کنید که در غیر این صورت تحت پوشش چارچوب فایروال قرار نمی گیرند. دستورات پس " +"از راه اندازی مجدد هر فایروال، درست پس از بارگذاری قوانین پیش فرض اجرا می " +"شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "طبقه بندی DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "علامت DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "علامت مورد نیاز DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "آدرس مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "پورت مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "منطقه مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "نام دستگاه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"قوانین اضافی برای رد ترافیک ارسال شده با حالت conntrack نصب " +"نکنیدنامعتبر. این ممکن است برای راه اندازی مسیر نامتقارن پیچیده " +"مورد نیاز باشد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "رها کردن بسته های نامعتبر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "به کار انداختن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "فعال کردن NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "محافظت SYN-flood را فعال کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "فعال کردن ورود به سیستم در این منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"آدرس شبکه و ترجمه پورت IPv4 (NAT4 یا NAPT4) را برای ترافیک خروجی در این " +"منطقه فعال کنید. این معمولاً در منطقه wan فعال است." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"آدرس شبکه و ترجمه پورت IPv6 (NAT6 یا NAPT6) را برای ترافیک خروجی در این " +"منطقه فعال کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "به کار افتاده" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "ردیابی تعداد بسته ها و بایت ها را برای مجموعه فعال می کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "انتظار: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"به صراحت راهنماهای ردیابی اتصال مجاز را برای ترافیک منطقه انتخاب می کند" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "آدرس IP خارجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "پورت خارجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "استدلال های اضافی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "استدلال های اضافی مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "استدلال های اضافی iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "استدلال های اضافی منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "خانواده" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "دیوار آتش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "فایروال - قوانین سفارشی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "فایروال - مجموعه های IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "فایروال - قوانین NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "فایروال-پورت رو به جلو" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "فایروال - قوانین ترافیک" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "فایروال - تنظیمات منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "انتقال پیکربندی فایروال" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "پیشروی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"%{ipv6?%{ipv4?IPv4 و IPv6:IPv6}:IPv4}%{proto? , پروتکل %{proto#%{next?, }%{item.name}}}%{mark?, " +"علامت %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "جمعه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "پیکربندی عمومی" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "اجازه دسترسی به پیکربندی فایروال" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "تخلیه جریان سخت افزار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (محدوده)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "مجموعه های IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "آی پی ها/شبکه ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "آی پی ها/شبکه ها/مک ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "آی پی نسخه ۴" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 و IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "فقط IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "آی پی نسخه ۶" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "فقط IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "دستگاه ورودی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "شامل فایل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"ورودی %{ipv6?%{ipv4?IPv4 و IPv6:IPv6}:" +"IPv4}%{proto? , پروتکل %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"با انواع % {item.types#%{next?, %{item}}:%{item." +"name}}}}%{ mark?، علامت %{mark." +"val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val} مطابقت دهید }}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "اندازه هش اولیه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "ورودی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "آدرس IP داخلی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "پورت داخلی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "منطقه داخلی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "هدایت بین ناحیه‌ای" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "علامت DSCP نامعتبر است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "مقدار حد نامعتبر است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "نام مجموعه نامعتبر است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "ترکیدگی را محدود کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "محدود کردن پیام های گزارش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "محدود کردن تطابق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"محدود کردن تطابق به %{limit.num} بسته ها در هر %{limit.unit}" +"%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "مخفی کاری محدود فعال شد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "تطابق ترافیک را با نرخ مشخص شده محدود می کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP منبع Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "بالماسکه - به طور خودکار در IP رابط خروجی بازنویسی شود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "بستن MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "ماسکه کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "همخوانی داشتن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP را مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "با نوع ICMP مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "دستگاه مطابق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "با ترافیک ارسال شده به آدرس IP داده شده مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"با ترافیک ارسالی هدایت شده در پورت مقصد یا محدوده پورت مشخص مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "با ترافیک ارسال شده از این IP یا محدوده مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"با ترافیک ارسال شده منشأ گرفته از درگاه منبع پورت یا محدوده پورت داده شده " +"مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "کمک کننده به همخوانی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"با ترافیک ورودی هدایت شده به درگاه مقصد پورت یا محدوده پورت داده شده در این " +"میزبان مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "علامت مطابقت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "با استفاده از راهنمای ردیابی اتصال مشخص شده، ترافیک را مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "با یک علامت فایروال خاص یا طیف وسیعی از علامت های مختلف مطابقت دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"با استفاده از دستگاه شبکه خروجی مشخص شده با ترافیک ارسال شده مطابقت دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "با ترافیک حامل علامت DSCP مشخص شده مطابقت دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "حداکثر ورودی ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "بیشترین طول" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"حداکثر تعداد بسته های اولیه برای مطابقت: این تعداد هر بار که به حد تعیین شده " +"در بالا نرسیده باشد، تا این تعداد , یک بار شارژ می شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "دوشنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "روزهای ماه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "قوانین NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"قوانین NAT اجازه می دهد تا کنترل دقیق روی IP منبع برای ترافیک خروجی یا ارسال " +"شده استفاده شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "کامل با QoS / SQM سازگار نیست." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "فقط با ترافیک ورودی هدایت شده در آدرس IP داده شده مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "فقط ترافیک ورودی از این MACها را مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "فقط ترافیک ورودی از این IP یا محدوده را مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"فقط با ترافیک ورودی که از پورت منبع یا محدوده پورت داده شده در میزبان مشتری " +"منشا می‌گیرد، مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "دستگاه خروجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "منطقه خروجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "خروجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "تطابق فیلد بسته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"فیلدهای بسته برای مطابقت با آنها.
نحو: direction_datatype. به " +"عنوان مثال: src_port، dest_net.
مسیرها: src، dst. انواع داده: ip, port, mac, net, set.
پیوندهای جهت " +"اختیاری هستند.
*توجه: نوع داده set در fw4 پشتیبانی نمی‌شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "آرگومان های اضافی را به iptables ارسال می کند. با احتیاط استفاده کنید!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"ارسال آرگومان‌های خام iptables به قوانین طبقه‌بندی ترافیک مبدأ و مقصد، امکان " +"تطبیق بسته‌ها را بر اساس معیارهای دیگری غیر از رابط‌ها یا زیرشبکه‌ها فراهم " +"می‌کند. این گزینه‌ها باید با دقت زیاد مورد استفاده قرار گیرند، زیرا مقادیر " +"نامعتبر می‌توانند مجموعه قوانین فایروال را شکسته و به طور کامل همه سرویس‌ها را " +"در معرض دید قرار دهند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "مسیر فایل CIDR ها، زیرشبکه ها، IP های میزبان و غیره.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "هدایت پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"ارسال پورت به رایانه های راه دور در اینترنت اجازه می دهد تا به رایانه یا " +"سرویس خاصی در شبکه LAN خصوصی متصل شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "محدوده پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "شیوه‌نامه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "ترافیک ورودی منطبق را به پورت داده شده در میزبان داخلی تغییر مسیر دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "ترافیک ورودی منطبق را به میزبان داخلی مشخص شده تغییر مسیر دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "مراجعه به مجموعه خارجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "مناطق بازتابی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "نیاز به پشتیبانی سخت افزاری NAT دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Masquerading را به زیرشبکه‌های مقصد مشخص محدود کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Masquerading را به زیرشبکه های منبع داده شده محدود کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "محدود کردن به آدرس خانواده" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "آدرس IP را بازنویسی کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "ترافیک منطبق را به آدرس IP منبع مشخص شده بازنویسی کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"ترافیک منطبق را در درگاه منبع پورت یا محدوده پورت مشخص شده بازنویسی کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "بازنویسی پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "بارگذاری مسیریابی/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - در IP یا پورت منبع خاصی بازنویسی کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "شنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "علامت گذاری" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"مقدار علامت داده شده را روی اتصالات ایجاد شده تنظیم کنید. قالب مقدار[/mask] " +"است. اگر یک ماسک مشخص شده باشد، فقط آن بیت هایی که در ماسک تنظیم شده اند، " +"اصلاح می شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "تخلیه جریان نرم افزار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "آدرس IP منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "آدرس MAC منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "آدرس منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "پورت منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "منطقه منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"مشخص می کند که آیا این قانون ترافیک به یک دستگاه شبکه ورودی یا خروجی خاص " +"مرتبط شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"مشخص می کند که آیا از آدرس IP خارجی یا داخلی برای ترافیک منعکس شده استفاده " +"شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "تاریخ شروع (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "زمان شروع (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "تاریخ توقف (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "زمان توقف (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "روش ذخیره سازی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "یکشنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "پیکربندی فایروال موجود باید تغییر کند تا LuCI به درستی کار کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"فایروال مناطقی را روی رابط های شبکه شما ایجاد می کند تا جریان ترافیک شبکه را " +"کنترل کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"گزینه های زیر خط مشی های حمل و نقل بین این منطقه (%s) و مناطق دیگر را کنترل " +"می کنند. مناطق مقصد ترافیک ارسال‌شده منشاء %q را " +"پوشش می‌دهند. مناطق منبع با ترافیک بازارسال شده از مناطق دیگر مطابقت " +"دارد با هدف %q. قانون ارسال یک جهته است، به عنوان " +"مثال. فوروارد از lan به wan نیست مستلزم اجازه فوروارد از wan به lan " +"نیز نیست." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"این بخش ویژگی های رایج %q را تعریف می کند. گزینه‌های input و " +"output خط‌مشی‌های پیش‌فرض را برای ترافیک ورودی و خروجی از این منطقه " +"تنظیم می‌کنند در حالی که گزینه forward خط‌مشی برای ترافیک ارسال‌شده " +"بین شبکه‌های مختلف را شرح می‌دهد. در داخل منطقه شبکه های تحت پوشش " +"مشخص می کند که کدام شبکه های موجود عضو این منطقه هستند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "پنجشبنه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "محدودیت های زمانی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "زمان در UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "محدودیت زمانی برای این قانون فعال شده است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "تایم اوت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "کمک کننده ردیابی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "قوانین ترافیک" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"قوانین ترافیک سیاست هایی را برای بسته هایی که بین مناطق مختلف حرکت می کنند، " +"تعریف می کنند، به عنوان مثال برای رد ترافیک بین میزبان های خاص یا باز کردن " +"پورت های WAN روی روتر." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "سه شنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "امکان ذخیره محتوا وجود ندارد: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"واحد: ثانیه پیش‌فرض 0 به این معنی است که ورودی برای همیشه به " +"مجموعه اضافه می‌شود.
حداکثر: 2147483 ثانیه." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "راهنمای کنتراک ناشناخته یا نصب نشده\"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "فوروارد بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "قانون بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "مجموعه بی نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "منطقه بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "پروتکل ناشناخته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"با فشار دادن \"Continue\"، بخش‌های \"redirect\" با هدف \"SNAT\" به بخش‌های " +"\"nat\" تبدیل می‌شوند و فایروال برای اعمال پیکربندی به‌روز شده مجددا راه‌اندازی " +"می‌شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "از آدرس IP خارجی استفاده کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "از آدرس IP داخلی استفاده کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "استفاده از ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"از این گزینه برای طبقه بندی ترافیک منطقه بر اساس دستگاه های شبکه مدیریت شده " +"خام و غیرuci استفاده کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"از این گزینه برای طبقه بندی ترافیک منطقه بر اساس زیرشبکه مبدا یا مقصد به جای " +"شبکه ها یا دستگاه ها استفاده کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "علامت فایروال معتبر لازم است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "چهارشنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "روزهای هفته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "علامت فایروال XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "علامت XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "دستگاه شما از فایروال 4 استفاده نمی کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "دستگاه شما از فایروال 4 استفاده می کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "فوروارد ⇒منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "مناطق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"مناطقی که قوانین بازتاب از آنها ایجاد می شود. اگر تنظیم نشود، فقط منطقه مقصد " +"استفاده می شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "تایید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "هر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "هر منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "هر/همه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "علامت فایروال را اعمال کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "اختصاص کمک کننده conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "خودکار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "بیت مپ فقط ipv4 است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "روز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: آی پی مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: آدرس مک مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (زیر)شبکه مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: پورت مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: مجموعه آی پی(ipset) مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "بازنویسی نکنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "پیگیری نکنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "رها کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 از ارجاع دادن و ایجاد مجموعه‌های IP برای ساده‌سازی تطبیق فهرست‌های " +"آدرس بزرگ بدون نیاز به ایجاد یک قانون برای هر آیتم برای تطبیق پشتیبانی " +"می‌کند. محدوده پورت در ipset توسط فایروال 4 پشتیبانی نمی شود.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "هش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "ساعت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: آدرس آی پی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
برای استفاده با انواع داده Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "آی پی نسخه ۴" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "لیست" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: آدرس مک" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "دقیقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (زیر)شبکه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "رد کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "ثانیه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: مجموعه آی پی(ipset)*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: مجموعه آی پی مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: آی پی مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: آدرس مک مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (زیر)شبکه مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: پورت مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "این دستگاه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "این منطقه جدید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "نامحدود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "نامشخص" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "تا ۶۵۵۳۶ ورودی." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "علامت فایروال معتبر" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "تخیله کردن مبتنی بر نرم افزار برای مسیریابی/NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/fi/firewall.po b/luci-app-firewall/po/fi/firewall.po new file mode 100644 index 000000000..f7efb5ba1 --- /dev/null +++ b/luci-app-firewall/po/fi/firewall.po @@ -0,0 +1,1610 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-08-31 15:13+0000\n" +"Last-Translator: Kieli Puoli \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Välitetty:Tuleva}:Lähtevä} %{ipv6?%{ipv4?IPv4 ja " +"IPv6:IPv6}:IPv4}%{proto?, protokolla " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP tyypit %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, " +"helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "- lisää IP -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "- lisää MAC -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +" Hyväksy %{src?%{dest?välitä:tuleva}:" +"lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Estä lähteen uudelleenkirjoitus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Välitä kohteeseen %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? porttiin %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Pudota %{src?%{dest?välitä:tuleva}:lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +" Määritä DSCP luokittelu " +"%{set_dscp} " + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Määritä yhteydenseuranta avustaja " +"{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} palomuurimerkintä " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +" Uudelleenkirjoita automaattisesti " +"lähteen IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Älä seuraa %{src?%{dest?välitä:tuleva}:" +"lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Hylkää %{src?%{dest?välitä:tuleva}:" +"lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Uudelleenkirjoita lähde staattisesti " +"%{snat_ip? IP-%{snat_ip}} %{snat_port?portti {snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Uudelleenkirjoitus IP on määritettävä!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "HYVÄKSY - Uudelleenkirjoittamatta osoitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Toiminta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Muutiptables argumentit vyöhykkeen kohdeliikenteen " +"luokittelemiseksi, esimerkiksi -p tcp --dport 443 vastaa vain " +"lähtevää HTTPS-liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Muutiptables argumentit vyöhykkeen lähdeliikenteen " +"luokittelemiseksi, esimerkiksi -p tcp --dport 443 vastaa vain " +"lähtevää HTTPS-liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Lisäasetukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Salli \"virheellinen\" liikenne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Salli välitys lähdevyöhykkeeltä:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Salli välitys kohdevyöhykkeelle:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Mikä tahansa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Minä päivänä tahansa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Käytä bitwise XOR-sääntöä muodostetuissa yhteyksissä. Muoto on arvo[/maski]. " +"Jos maski on määritetty, maskissa määritetyt bitit nollataan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Käytä annettua DSCP-luokkaa tai arvoa muodostetuille yhteyksille." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Määritä yhteysseurantaapuri vastaavalle liikenteelle." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automaattinen avustajan määritys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Määritä yhteysseurantaapuri automaattisesti protokollan ja portin perusteella" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack-asetukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack-auttajat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Sisältö on tallennettu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Jatka" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Katetut laitteet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Katetut verkot" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Katetut aliverkot" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Mukautetut säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Mukautetut säännöt antavat sinun suorittaa mielivaltaisia iptable-komentoja, " +"joita palomuurin toiminnot eivät muuten kata. Komennot suoritetaan jokaisen " +"palomuurin uudelleenkäynnistyksen jälkeen heti oletussääntöjoukon lataamisen " +"jälkeen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP-luokitus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP-merkki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP-merkki vaaditaan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Kohdeosoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Kohdeportti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Kohdevyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Laitenimi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Älä asenna ylimääräisiä sääntöjä välitetyn liikenteen hylkäämiseksi, jos " +"conntrack-tila on virheellinen . Tätä voidaan tarvita " +"monimutkaisissa epäsymmetrisissä reittiasetuksissa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Pudota virheelliset paketit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Ota käyttöön" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Ota käyttöön NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Käytä SYN-flood-suojausta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Ota kirjaaminen käyttöön tällä vyöhykkeellä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Käytössä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Odotettu: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Valitse käsin sallivat yhteydenseuranta-apurit vyöhykeliikenteelle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Ulkoinen IP-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Ulkoinen portti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Ylimääräiset argumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Lisäkohdeargumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Iptablesin lisäargumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Lisälähdeargumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Palomuuri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Palomuuri - Mukautetut säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Palomuuri - NAT-säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Palomuuri - Portin välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Palomuuri - Liikennesäännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Palomuuri - vyöhykeasetukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Palomuurin määritysten siirto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Välitä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Perjantai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Lähde %{src}%{src_device?, sovitin %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Lähde %{src}%{src_device?, sovitin %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Lähde %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Yleiset asetukset" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Anna pääsy palomuurin määrityksiin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Laitteistovirran purku" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP:t/verkot" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP:t/verkot/MAC:it" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 ja IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Vain IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Vain IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Saapuva laite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Tuleva" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Sisäinen IP-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Sisäinen portti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Sisäinen vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Virheellinen DSCP-merkki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Virheellinen raja-arvo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Rajoita purskeet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Rajoita lokisanomia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Rajoita vastaavat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Rajoita vastaavuus %{limit.num} pakettia per %{limit.unit}%{limit.burst? purske %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Rajoitettu naamiointi käytössä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Rajoittaa liikenteen määritettyyn nopeuteen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Loopback-lähteen IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Uudelleenkirjoitus automaattisesti lähtevän rajapinnan IP: lle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS-kiinnitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Naamiointi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Vastaa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Vastaa DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Vastaa ICMP-tyyppiä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Vastaa laitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Vastaa annettuun IP-osoitteeseen välitettyä liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Vastaa välitettyä liikennettä, joka on suunnattu määrättyyn porttiin tai " +"portti-alueeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Vastaa välitettyä liikennettä tästä IP-osoitteesta tai alueelta." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Vastaa välitettyä liikennettä, joka on peräisin annetusta portista tai " +"portti-alueesta." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Vastaa auttajaa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Vastaa saapuvaa liikennettä, joka on suunnattu annetulle kohdeportille tai " +"portti-alueelle tällä laitteella" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Vastaa merkkiä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Vastaa liikennettä määritetyllä yhteydenseuranta-apurilla." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Vastaa tiettyä palomuurimerkkintää tai joukkoa erilaisia merkkintöjä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "Vastaa välitettyä liikennettä tietyn lähtevän sovittimen perusteella." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Vastaa liikennettä, jolla on määritetty DSCP-merkintä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Alkuperäinen enimmäismäärä vastaamaan: tämä määrä kasvatetaan yhdellä aina, " +"määritettyyn numeroon saakka, kunnes annettu määrä saavutetaan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Maanantai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Kuukauden päivät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-säännöt sallivat lähde-IP:n hienostuneen hallinnan käytettäväksi " +"lähtevässä tai välitetyssä liikenteessä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nimi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Ei täysin yhteensopiva QoS/SQM:n kanssa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Vastaa vain annettuun IP-osoitteeseen suuntautuvaa liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Vastaa vain näistä MAC-osoitteista tulevaa liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Vastaa vain saapuvaa liikennettä tästä IP-osoitteesta tai alueelta." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Vastaa vain saapuvaa liikennettä, joka on lähtöisin annetusta lähdeportista " +"tai porttialueesta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Lähtevälaite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Lähtevä vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Lähtevä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Välittää lisäargumentteja iptablesille. Käytä varoen!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Iptable-argumentien käyttäminen lähde- ja kohdeliikenteen luokitussääntöihin " +"sallii pakettien valitsemisen muilla kriteereillä kuin sovittimin tai " +"aliverkkoin. Näitä vaihtoehtoja tulee käyttää erittäin varovaisesti, koska " +"virheelliset arvot voivat rikkoa palomuurisäännöt paljastaen kaikki palvelut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Portin välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Portinvälityksen avulla Internetin etätietokoneet voivat muodostaa yhteyden " +"tiettyyn tietokoneeseen tai palveluun yksityisessä lähiverkossa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Porttialue" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokolla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Uudelleenohjaa saapuva liikenne sisäisen palvelimelle annettuun porttiin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Uudelleenohjaa saapuva liikenne määritettyyn sisäiseen palvelimeen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Edellyttää laitteiston NAT-tukea." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Rajoita naamiointi tiettyihin kohdeverkkoihin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Rajoita naamiointi tiettyihin kohdeverkkoihin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Rajoita tietyille osoitteille" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Kirjoita IP-osoite uudelleen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Kirjoita vastaava tietoliikenne uudelleen määritettyyn lähde-IP-osoitteeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Kirjoita vastaava tietoliikenne uudelleen määritettyyn lähdeporttiin tai " +"porttialueeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Uudelleenkirjoita portti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Reititys/NAT-purku" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Kirjoita tiettyyn lähde IP:hen tai porttiin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Lauantai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Merkitse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Määritä määritetty merkkiarvo muodostetuille yhteyksille. Muoto on arvo[/" +"mask]. Jos maski on määritetty, vain maskiin määritettyjä bittiä muokataan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Ohjelmistopohjainen tietovirran nopeutus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Lähde-IP-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Lähde MAC-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Lähdeosoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Lähdeportti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Lähdevyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Määrittää, sidotaanko tämä liikennesääntö tiettyyn saapuvaan vai lähtevään " +"verkkolaitteeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Määrittää, käytetäänkö ulkoista vai sisäistä IP-osoitetta heijastuneeseen " +"liikenteeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Aloituspäivä (vvvv-kk-pp)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Aloitusaika (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Lopetuspäivä (vvv-kk-pp)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Lopetusaika (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Sunnuntai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "Nykyistä palomuurimääritystä on muutettava, jotta LuCI toimisi oikein." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Palomuuri luo vyöhykkeitä verkkosovittimista verkkoliikenteen kulun " +"hallitsemiseksi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Alla olevat asetukset ohjaavat tämän vyöhykkeen (%s) ja muiden vyöhykkeiden " +"välisiä välityskäytäntöjä. Kohdevyöhyke kattavat välitettävän " +"liikenteen , joka on peräisin kohteesta %q. " +"Lähdevyöhykkeet vastaavat välitettyä liikennettä muilta vyöhykkeiltä " +", jotka on kohdistettu kohteeseen %q. Välityssääntö on " +"yksisuuntainen, esimerkiksi eteenpäin lanista waniin ei " +"merkitse lupaa myös päästä eteenpäin wanista laniin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Tässä osassa määritetään kohteen %q yleiset ominaisuudet. tuleva ja " +" lä'htevä -asetukset asettavat oletuskäytännöt tälle alueelle " +"saapuville ja sieltä poistuneille liikenteelle, kun taas välitä -" +"vaihtoehdossa kuvataan alueen eri verkkojen välisen välitettyä liikennettä " +"koskeva käytäntö. Katetut verkot määrittävät, mitkä käytettävissä " +"olevat verkot ovat tämän vyöhykkeen jäseniä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Torstai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Aikarajoitukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "UTC-aika" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Aikarajoitukset ovat käytössä tälle säännölle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Maksimiaika" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Kohde %{dest}%{dest_device?, sovitin %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Kohde %{dest}%{dest_device?, via sovitin %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Kohde %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Seurantaapuri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Liikennesäännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Liikennesäännöt määrittävät käytännöt eri vyöhykkeiden välillä kulkeville " +"paketeille, esimerkiksi tiettyjen isäntien välisen liikenteen hylkäämiseksi " +"tai WAN-porttien avaamiseksi reitittimessä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Tiistai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Sisältöä ei voi tallentaa: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Tuntematon tai asentamaton conntrack-auttaja \"% s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Nimeämätön NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Nimeämätön välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Nimetön sääntö" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Nimeämätön vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Tunnistamaton protokolla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Kun painat \"Jatka\", \"uudelleenohjaus\" -kohdat, joilla on tavoite " +"\"SNAT\", muunnetaan \"nat\" -osioiksi ja palomuuri käynnistetään uudelleen " +"päivitetyn määrityksen aktivoimiseksi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Käytä ulkoista IP-osoitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Käytä sisäistä IP-osoitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Tämän vaihtoehdon avulla voit luokitella vyöhykeliikennettä raakana, ei-" +"uci -hallittujen sovittimien avulla." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Tämän asetuksen avulla voit luokitella vyöhykeliikenteen lähde- tai kohde " +"aliverkon mukaan verkkojen tai laitteiden sijaan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Kelvollinen palomuurimerkintä vaaditaan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Keskiviikko" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Viikon päivät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR-palomuurimerintä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR-merkki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Vyöhyke ⇒ Välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Vyöhykkeet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "hyväksy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "mikä tahansa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "mikä tahansa vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "aseta palomuurimerkintä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "määritä conntrack-helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automaattinen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "päivä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "älä kirjoita uudelleen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "älä seuraa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "pudota" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "tunti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuutti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "hylkää" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekunti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "tämä laite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "tämä uusi vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "rajoittamaton" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "määrittelemätön" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "kelvollinen palomuurimerkintä" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Ohjelmistopohjainen reititys/NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Välitetty IPv4%{proto?, protokolla %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Saapuva IPv4%{proto?, protokolla %{proto#%{next?, }%{item.types?%{item.name}ICMP tyypit %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/fr/firewall.po b/luci-app-firewall/po/fr/firewall.po index bc11f49aa..d142a9523 100644 --- a/luci-app-firewall/po/fr/firewall.po +++ b/luci-app-firewall/po/fr/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-03-20 17:55+0000\n" -"Last-Translator: Hydci \n" +"PO-Revision-Date: 2024-02-01 22:49+0000\n" +"Last-Translator: ButterflyOfFire \n" "Language-Team: French \n" "Language: fr\n" @@ -12,140 +12,148 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 5.4-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- ajouter IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- ajouter MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "Accepter %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "Empêcher la réécriture de la source" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -"Suivre vers %{dest}%{dest_ip ? IP " -"%{dest_ip}}%{dest_port ? port %{dest_port}}" +"Transférer vers %{dest}%{dest_ip ? IP " +"%{dest_ip}}%{dest_port ? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -"Laisser %{src?%{dest?forward:input}:output}" +"Ignorer %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -"Assigner DSCP classification " -"%{set_dscp}" +"Assigner DSCP classification " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -"Attribuer conntrack assistant %{set_helper}" +"Attribuer conntrack assistant " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" "Réécrire automatiquement l'IP source" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -"Ne pas suivre %{src?%{dest?forward:" +"Ne pas pister %{src?%{dest?forward:" "input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" "Rejeter %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -"Statically rewrite to source %{snat_ip?IP " -"%{snat_ip}} %{snat_port?port %{snat_port}}" +"Réécrire statiquement vers la source " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "Une IP de réécriture doit être spécifiée!" +msgstr "Une IP de réécriture doit être spécifiée !" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ACCEPTER - Désactiver la réécriture d'adresses" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Action" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -155,7 +163,7 @@ msgstr "" "destination de la zone, par exemple -p tcp --dport 443 pour " "correspondre uniquement au trafic HTTPS sortant." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -164,37 +172,49 @@ msgstr "" "source de la zone, par exemple -p tcp --sport 443 pour " "correspondre uniquement au trafic HTTPS entrant." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Famille d’adresses, l’adresse IP interne doit correspondre" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"La famille d'adresses, l'adresse source, l'adresse de destination et " +"l'adresse IP de réécriture doivent correspondre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Paramètres avancés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "Autoriser le trafic \"non valide\"" +msgstr "Autoriser le trafic \"invalide\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Permettre la transmission des zones source :" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Permettre la transmission vers les zones destination :" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "N'importe lequel" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "N'importe quel jour" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -205,60 +225,69 @@ msgstr "" "mask]. Si un masque est spécifié, les bits définis dans le masque sont mis à " "zéro." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." -msgstr "Appliquez la classe ou la valeur DSCP donnée aux connexions établies." +msgstr "Applique la classe ou la valeur DSCP donnée aux connexions établies." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -"Attribuez l'assistant de suivi des connexions spécifié au trafic " +"Attribue l'assistant de suivi des connexions spécifié au trafic " "correspondant." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Affectation automatique des assistants" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" "Attribuer automatiquement des assistants conntrack en fonction du protocole " "de trafic et du port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Commentaire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Paramètres Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Assistants Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "Le contenu a été enregistré." +msgstr "Les contenus ont été enregistrés." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Continuer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Compteurs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Appareils couverts" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Réseaux couverts" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Sous-réseaux couverts" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" -msgstr "Régles spécifiques" +msgstr "Règles spécifiques" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -269,37 +298,37 @@ msgstr "" "feu. Les commandes sont exécutées après chaque redémarrage du pare-feu, " "juste après le chargement de l'ensemble de règles par défaut." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "Classification DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "Marque DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "Marque DSCP requise" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Adresse de destination" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Port de destination" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Zone de destination" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Nom de l'appareil" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -308,123 +337,156 @@ msgstr "" "avec l'état conntrack invalide. Cela peut être nécessaire pour les " "configurations de route asymétriques complexes." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "Supprimer les paquets invalides" +msgstr "Ignorer les paquets invalides" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Activer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Activer le NAT sur la boucle-locale" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Activer la protection contre le SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Activer les traces (logs) sur cette zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Activer la traduction d'adresse réseau et de port IPv4 (NAT4 ou NAPT4) pour " +"le trafic sortant de cette zone. Cette option est généralement activée dans " +"la zone wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Activer la traduction d'adresse réseau et de port IPv6 (NAT6 ou NAPT6) pour " +"le trafic sortant sur cette zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Activé" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Active le suivi du nombre de paquets et d'octets pour l'ensemble." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "Attendu : % s" +msgstr "Attendu : %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Fonction expérimentale. Pas entièrement compatible avec QoS/SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" "Choisit explicitement les assistants de suivi de connexion autorisés pour le " "trafic de zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Adresse IP externe" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Port externe" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Arguments supplémentaires" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Arguments de destination supplémentaires" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Arguments supplémentaires iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Arguments sources supplémentaires" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Famille" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Pare-feu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Pare-feu - Règles personnalisées" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Pare-feu - IPset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Pare-feu - Règles NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Pare-feu - Redirections de ports" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Pare-feu - Règles de trafic" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Pare-feu - Configuration des zones" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "Migration de la configuration du pare-feu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 -msgid "Forward" -msgstr "Transférer" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 -msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Avant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Transféré %{ipv6?%{ipv4?IPv4 et IPv6:IPv6}:" +"IPv4}%{proto? protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Vendredi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Paramètres généraux" +msgstr "Réglages généraux" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Octroi l'accès à la configuration du pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "Déchargement de flux matériel" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "Plage d'IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP Sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Réseaux" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Réseaux/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 et IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "IPv4 seulement" +msgstr "IPv4 uniquement" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Masquage IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "IPv6 seulement" +msgstr "IPv6 uniquement" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Appareil entrant" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Inclure le fichier" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Entrant %{ipv6?%{ipv4?IPv4 et IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}" +":%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Taille initiale du hachage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Entrée" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Adresse IP interne" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Port interne" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Zone interne" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Marque DSCP non valide" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Valeur limite non valide" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Rafale limite" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Limiter les messages de journalisation" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Limiter la correspondance" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" @@ -577,75 +700,79 @@ msgstr "" "Limiter la correspondance à %{limit.num} paquets par %{limit." "unit}%{limit.burst? burst %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Autorise un masquage limité" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "Limite le trafic correspondant au débit spécifié." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "IP source de bouclage" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "MASQUERADE - Réécriture automatique sur l'IP de l'interface sortante" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Contrainte du MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Masquage" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" -msgstr "Match" +msgstr "Correspond" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "Match DSCP" +msgstr "Faire correspondre DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Type ICMP correspondant" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "Match device" +msgstr "Match appareil" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" "Faites correspondre le trafic transféré dirigé vers l'adresse IP donnée." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "Faites correspondre le trafic transféré dirigé vers le port de destination " -"ou la plage de ports donné." +"ou de ports donné." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -"Faites correspondre le trafic transféré depuis cette adresse IP ou cette " -"plage." +"Fait correspondre le trafic transféré depuis cette adresse IP ou cette plage." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -"Faites correspondre le trafic transféré provenant du port source ou de la " +"Fait correspondre le trafic transféré provenant du port source ou de la " "plage de ports donné." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "Aide au match" +msgstr "Assistant à la correspondance" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -653,34 +780,42 @@ msgstr "" "Prendre en compte le trafic dirigé vers le port de destination donné (ou la " "gamme de ports) sur cet hôte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" -msgstr "Match mark" +msgstr "Correspondance mark" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -"Faites correspondre le trafic à l'aide de l'assistant de suivi des " -"connexions spécifié." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 -msgid "Matches a specific firewall mark or a range of different marks." -msgstr "" -"Correspond à une marque de pare-feu spécifique ou à une gamme de marques " -"différentes." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 -msgid "Matches forwarded traffic using the specified outbound network device." -msgstr "" -"Correspond au trafic transféré à l'aide du périphérique réseau sortant " +"Fait correspondre le trafic à l'aide de l'assistant de suivi des connexions " "spécifié." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Fait correspondre à un marquage de pare-feu spécifique ou à un intervalle de " +"marquages différents." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Fait correspondre le trafic transféré en fonction du périphérique réseau " +"sortant spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "Correspond au trafic portant le marquage DSCP spécifié." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Entrées max" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Longueur Max" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -689,22 +824,22 @@ msgstr "" "rechargé d'un à chaque fois que la limite spécifiée ci-dessus n'est pas " "atteinte, jusqu'à ce nombre." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Lundi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Mois jours" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "Règles NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -712,29 +847,43 @@ msgstr "" "Les règles NAT permettent un contrôle fin sur l'IP source à utiliser pour le " "trafic sortant ou transféré." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nom" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Masque réseau" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Pas entièrement compatible avec QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" "Correspondre uniquement au trafic entrant dirigé vers l'adresse IP donnée." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Montrer seulement le trafic entrant provenant de ces adresses MAC." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" "Correspondre uniquement au trafic entrant provenant de cette adresse IP ou " "de cette plage." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -742,29 +891,46 @@ msgstr "" "Faire correspondre uniquement le trafic entrant provenant du port source ou " "de la plage de ports donné sur l'hôte client" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "Périphérique sortant" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Zone sortante" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Sortie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Packet Field Match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Les champs de paquets correspondant à.
Syntax : direction_datatype. e.g. : src_port, dest_net.
Directions : src, " +"dst. Types de données : ip, port, mac, net, set.
Les préfixes de direction sont optionnels.
*Note : datatype " +"set n'est pas supporté dans fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" "Passe des arguments supplémentaires aux tables d'adresses IP. A utiliser " "avec précaution !" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -779,12 +945,18 @@ msgstr "" "non valides peuvent endommager le jeu de règles du pare-feu, exposant " "complètement tous les services." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"Chemin d'accès au fichier des CIDR, des sous-réseaux, des IP hôtes, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Redirections de port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -792,80 +964,94 @@ msgstr "" "La redirection de port permet aux ordinateurs distants sur Internet, de se " "connecter à un ordinateur ou service spécifié dans le réseau local privé." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Plage de ports" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protocole" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Rediriger le trafic entrant correspondant vers le port donné sur l'hôte " "interne" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Rediriger le trafic entrant correspondant vers l'hôte interne spécifié" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "Nécessite un support NAT matériel. Implémenté au moins pour mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Reportez-vous à l'ensemble externe" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zones de réflection" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Nécessite un support NAT matériel." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" "Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux " "destinataires" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" "Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux " "sources" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "Restreindre à cette famille d'adresses" +msgstr "Restreindre à la famille d’adresses" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "Réécrire l'adresse IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." -msgstr "Réécrivez le trafic correspondant à l'adresse IP source spécifiée." +msgstr "Réécrit le trafic correspondant à l'adresse IP source spécifiée." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -"Réécrivez le trafic correspondant sur le port source ou la plage de ports " +"Réécrit le trafic correspondant sur le port source ou la plage de ports " "spécifié." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Port de réécriture" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "Routage/déchargement NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - Réécriture sur IP ou port source spécifique" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Samedi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "Définir la marque" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -874,70 +1060,40 @@ msgstr "" "est la valeur[/mask]. Si un masque est spécifié, seuls les bits définis dans " "le masque sont modifiés." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Déchargement basé sur logiciel pour le routage/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Déchargement de flux logiciel" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Adresse IP source" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Adresse MAC source" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Adresse source" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Port source" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zone source" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -945,7 +1101,7 @@ msgstr "" "Spécifie s'il faut lier cette règle de trafic à un périphérique réseau " "entrant ou sortant spécifique." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -953,32 +1109,36 @@ msgstr "" "Spécifie s'il faut utiliser l'adresse IP externe ou interne pour le trafic " "réfléchi." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Date de début (aaaa-mm-jj)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Heure de début (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Heure de début (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Date d'arrêt (aaaa-mm-jj)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Heure d'arrêt (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Heure d'arrêt (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Méthode de stockage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Dimanche" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." @@ -986,7 +1146,7 @@ msgstr "" "La configuration de pare-feu existante doit être modifiée pour que LuCI " "fonctionne correctement." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -994,8 +1154,8 @@ msgstr "" "Le pare-feu crée des zones sur les interfaces réseau pour contrôler le flux " "du trafic réseau." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -1012,7 +1172,7 @@ msgstr "" "transmission du LAN au WAN n'implique pas également l'autorisation " "de transmission du WAN au LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -1022,27 +1182,35 @@ msgid "" msgstr "" "Cette section définit les propriétés communes de %q. Les options entrée et sortie définissent les politiques par défaut pour le trafic " -"entrant et sortant de cette zone tandis que l'option en avant " +"entrant et sortant de cette zone tandis que l'option transfert " "décrit la politique pour le trafic transféré entre différents réseaux dans " "la zone. Réseaux couverts spécifie quels réseaux disponibles sont " "membres de cette zone." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Jeudi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Restrictions de temps" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Heure en UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Des restrictions horaires sont activées pour cette règle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Délai d'attente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "Aide au suivi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Règles de trafic" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Les règles de trafic définissent des politiques pour les paquets voyageant " "entre différentes zones, par exemple pour rejeter le trafic entre certains " "hôtes ou pour ouvrir des ports WAN sur le routeur." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Mardi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" -msgstr "Impossible d'enregistrer le contenu: %s" +msgstr "Impossible d'enregistrer le contenu : %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unité : secondes. Défaut 0 signifie que l'entrée est ajoutée de " +"manière permanente à l'ensemble.
Max : 2147483 secondes." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "Assistant conntrack inconnu ou non installé \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "NAT sans nom" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" -msgstr "Transférer sans nom" +msgstr "Transfert sans nom" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Règle sans nom" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Unnamed set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Zone sans nom" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "Protocole non reconnu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " @@ -1148,15 +1328,21 @@ msgstr "" "\"SNAT\" seront converties en sections \"nat\" et le pare-feu sera redémarré " "pour appliquer la configuration mise à jour." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Utiliser une adresse IP externe" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Utiliser l'adresse IP interne" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Utiliser ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1164,7 +1350,7 @@ msgstr "" "Utilisez cette option pour classer le trafic de zone par périphériques " "réseau bruts non uci gérés." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1172,246 +1358,319 @@ msgstr "" "Utilisez cette option pour classer le trafic de zone par sous-réseau source " "ou de destination au lieu de réseaux ou de périphériques." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "Marque de pare-feu valide requise" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Mercredi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Jours de la semaine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "Marque de pare-feu XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "Marque XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 -msgid "Zone ⇒ Forwardings" -msgstr "Zone ⇒ Transmissions" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Votre appareil n'exécute pas firewall4." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Votre appareil fonctionne avec firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Transferts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zones" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zones depuis lesquelles les règles de réflexion doivent être appelées. Si " +"non défini, seulement la zone de destination est utilisée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "accepter" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "tous" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "n'importe quelle zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "tout/tous" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "appliquer une marque de pare-feu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "affecter l'assistant conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatique" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Bitmap uniquement pour IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "journée" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip : IP de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac : Adresse MAC de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net : Destination (sous -) Réseau" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port : Port de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set : Destination ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "ne réécris pas" +msgstr "ne pas réécrire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "ne pas suivre" +msgstr "ne pas pister" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "ignorer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 prend en charge le référencement et la création d' IPset afin de " +"simplifier la correspondance de gd listes d'adresses sans avoir à créer une " +"règle par élément. Les plages de ports dans les ipsets ne sont pas prises en " +"charge par firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "Du port au port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "heure" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip : addr IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
A utiliser avec les types de données Match : *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac : MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "minute" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "réseau : (sous-)réseau" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port : Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "rejeter" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "seconde" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set : ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set : Source ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip : IP source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac : Source MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net : Source (sous-)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Source Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "cet appareil" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "cette nouvelle zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "non limité" +msgstr "illimité" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "non précisé" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "jusqu'à 65536 entrées." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "marque de pare-feu valide" -#~ msgid "%s in %s" -#~ msgstr "%s dans %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s avec %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s dans %s" - -#~ msgid "Accept input" -#~ msgstr "Accepter l'entrée" - -#~ msgid "Destination IP address" -#~ msgstr "Adresse IP de destination" - -#~ msgid "Forward to" -#~ msgstr "Transférer à" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "Plage IP" - -#~ msgid "IPs" -#~ msgstr "IPs" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MACs" - -#~ msgid "Network" -#~ msgstr "Réseau" - -#~ msgid "any host" -#~ msgstr "n'importe quel hôte" - -#~ msgid "not" -#~ msgstr "ne pas" - -#~ msgid "port" -#~ msgstr "port" - -#~ msgid "type" -#~ msgstr "type" - -#~ msgid "Force connection tracking" -#~ msgstr "Forcer le suivi des connexions" - -#~ msgid "Disable" -#~ msgstr "Désactiver" - -#~ msgid "External zone" -#~ msgstr "Zone externe" - -#~ msgid "New SNAT rule" -#~ msgstr "Nouvelle règle SNAT" - -#~ msgid "New input rule" -#~ msgstr "Nouvelle règle d'entrée" - -#~ msgid "New port forward" -#~ msgstr "Nouvelle redirection de port" - -#~ msgid "New source NAT" -#~ msgstr "Nouvelle source NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Ports ouverts sur le routeur" - -#~ msgid "Other..." -#~ msgstr "Autre..." - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Transmission entre zones" - -#~ msgid "SNAT IP address" -#~ msgstr "Adresse IP SNAT" - -#~ msgid "SNAT port" -#~ msgstr "Port SNAT" - -#~ msgid "Source NAT" -#~ msgstr "Source NAT" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Déchargement basé sur logiciel pour le routage/NAT" #~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "Cette page vous permet de modifier les propriétés avancées parmi les " -#~ "entrées de redirection de port. Dans la plupart des cas, cela n'est pas " -#~ "nécessaire de modifier ces paramètres." +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" -#~ msgid "Zone %q" -#~ msgstr "Zone %q" +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/ga/firewall.po b/luci-app-firewall/po/ga/firewall.po new file mode 100644 index 000000000..2c0f9fd16 --- /dev/null +++ b/luci-app-firewall/po/ga/firewall.po @@ -0,0 +1,1623 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-10-25 20:19+0000\n" +"Last-Translator: Aindriú Mac Giolla Eoin \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(" +"n>6 && n<11) ? 3 : 4;\n" +"X-Generator: Weblate 5.8.2-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Ar Aghaidh:Isteach}:Amach} %{ipv6?%{ipv4?IPv4 agus " +"IPv6:IPv6} :IPv4}%{proto?, prótacal " +"%{proto#%{next?, }%{item.types?%{item." +"name} ICMP le cineálacha %{item.types#%{next?, }" +"%{item}}:% {item.name}}}} %{mark?, marcáil %{mark.val}} " +"%{dscp?, DSCP %{dscp.inv? %{dscp.val}: %{dscp.val} }} %{ cúntóir?, cúntóir %{helper.inv? %{helper.val}:" +" %{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "- Cuir IP leis -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "- cuir MAC leis -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Glac le %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Cosc ar athscríobh foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Ar aghaidh chuig %{dest}%{dest_ip? IP " +"%{dest_ip}} %{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Buail %{src?%{dest?forward:input}:aschur}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Sann DSCP rangú %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"An bhfuil fonn ort cúntóir a shannadh " +" %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} marc balla dóiteáin " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Athscríobh go huathoibríoch IP foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Ná rianaigh %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Diúltaigh %{src?%{dest?forward:input}:" +"aschur}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Athscríobh go statach chuig foinse " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Ní mór IP athscríobh a shonrú!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "GLACADH - Díchumasaigh athscríobh seoltaí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Gníomhaíocht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argóintí breise amh iptables chun trácht ceann scríbe crios a " +"rangú, m.sh. -p tcp --dport 443 chun trácht HTTPS amach a " +"mheaitseáil amháin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argóintí breise amh iptables chun trácht foinse crios a rangú, m." +"sh. -p tcp --sport 443 chun trácht HTTPS isteach a mheaitseáil " +"amháin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Teaghlach seoladh, Caithfidh seoladh IP inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Caithfidh seoladh teaghlach, seoladh foinse, seoladh ceann scríbe, " +"athscríobh seoladh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Socruithe chun cinn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Ceadaigh trácht “neamhbhailí”" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Ceadaigh ar aghaidh ó criosanna foinse:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Ceadaigh ar aghaidh chuig criosanna:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Aon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Lá ar bith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Cuir XOR giotáin den luach tugtha agus an luach marc atá ann cheana i " +"bhfeidhm ar naisc bhunaithe. Is é an fhormáid luach [/mask]. Má shonraítear " +"masc ansin déantar na giotáin sin a leagtar amach sa masc a nialú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Cuir an rang nó an luach DSCP a thugtar i bhfeidhm ar naisc bhunaithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Sann an cúntóir rianaithe nasc sonraithe le trácht comhoiriúnach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Sannadh cúntóir uathoi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Cúntóirí conntrack a shannadh go huathoibríoch bunaithe ar phrótacal tráchta " +"agus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Trácht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Socruithe Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Cúntóirí Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Sábháiltear an t-ábhar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Lean ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Áiritheoirí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Feistí clúdaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Líonraí clúdaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Fo-líontaí clúdaithe" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Rialacha Saincheaptha" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Ligeann rialacha saincheaptha duit orduithe iptables treallach a " +"fhorghníomhú nach bhfuil clúdaithe ag an gcreat balla dóiteáin ar shlí eile. " +"Déantar na horduithe a fhorghníomhú tar éis gach balla dóiteáin a atosú, " +"díreach tar éis an tacar rialacha réamhshocraithe a luchtú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Aicmiú DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Marca DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Marca DSCP ag teastáil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Seoladh scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Port ceann scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Crios ceann scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Ainm gléas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Ná suiteáil rialacha breise chun trácht ar aghaidh a dhiúltú le staid " +"conntrack neamhbhailí. D'fhéadfadh sé seo a bheith ag teastáil le " +"haghaidh socruithe casta bealaí neamhshiméadracha." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Scaoil pacáid neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Cumasaigh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Cumasaigh NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Cumasaigh cosaint tuilte Sync" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Cumasaigh logáil ar an gcrios seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Cumasaigh seoladh líonra agus aistriúchán poirt IPv4 (NAT4 nó NAPT4) le " +"haghaidh tráchta amach sa chrios seo. Is gnách é seo a chumasú sa chrios " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Cumasaigh seoladh líonra agus aistriúchán calafoirt IPv6 (NAT6 nó NAPT6) le " +"haghaidh tráchta amach ar an gcrios seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Cumasaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Cumasaíonn sé rianú comhaireamh paicéad agus béite don tacar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Ag súil le: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Roghnaíonn sé go sainráite cúntóirí rianaithe nasc ceadaithe do thrácht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Seoladh IP seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Calafort seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argóintí breise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Argóintí scríbe breise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Argóintí breise iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Argóintí foinse breise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Teaghlach" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Balla dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Dóiteáin - Rialacha Saincheaptha" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Balla dóiteáin - tacair IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Balla dóiteáin - Rialacha NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Balla dóiteáin - Port Forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Balla Dóiteáin - Rialacha Tráchta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Balla dóiteáin - Socruithe Crios" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Imirce cumraíochta dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Cineál díluchtaithe sreabhadh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Curtha ar aghaidh %{ipv6?%{ipv4?IPv4 agus IPv6:" +"IPv6}:IPv4}%{ proto? , prótacal %{proto#%{ar " +"aghaidh?, }%{item.name} }} %{mark?, marc %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Dé hAoine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Ó %{src}%{src_device?, comhéadan %{src_device}} %{src_ip?, IP " +"%{src_ip#%{next?, } %{item.ival} }} %{src_port?, port " +"%{src_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Ó %{src}%{src_device?, comhéadan %{src_device}} %{src_ip?, IP " +"%{src_ip#%{next?, } %{item.ival} }} %{src_port?, port " +"%{src_port#%{ Next?, } %{item.ival} }} %{src_mac?, MAC " +"%{src_mac#%{next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Ó %{src}%{src_ip?, IP %{src_ip#%{ar aghaidh?, } %{item.ival} }} %{src_port?, port %{src_port#%{ Next?, } %{item.ival} }} " +"%{src_mac?, MAC %{src_mac#%{next?, } " +"%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Socruithe Ginearálta" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Rochtain a dheonú ar chumraíocht dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Díluchtú bunaithe ar chrua-earraí le haghaidh ródú le/gan NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Díluchtú sreafa crua-earraí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (raon)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Tacair IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPS/líonraí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPS/líonraí/Macanna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 agus IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 amháin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascaradh IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 amháin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Gléas isteach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Cuimsigh Comhad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Ag teacht isteach %{ipv6?%{ipv4?IPv4 agus IPv6:" +"IPv6}:IPv4}%{ proto? , prótacal " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP le cineálacha % {item.types#%{next?, }" +"%{item}}: %{item.name} }}} %{ marc?, " +"marcáil %{mark.val}} %{helper?, cúntóir %{helper.inv? %{helper.val}:" +" %{helper.val} }}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Méid Hash Tosaigh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Ionchur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Seoladh IP inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Port inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Crios inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Intra chrios ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Marca DSCP neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Luach teorann neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Ainm tacar neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Pléascadh teorainn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Teachtaireachtaí logála teorainn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Meaitseáil teorainn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Teorainn a mheaitseáil le %{limit.num} paicéad in aghaidh an " +"%{limit.unit} %{limit.burst? pléasctha %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Cumasaithe masquerading teoranta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Teoraíonn sé meaitseáil tráchta leis an ráta sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Foinse Loopback IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Athscríobh go huathoibríoch chuig IP comhéadan amach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Clampáil MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Masquerating" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Meaitseáil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Meaitseáil DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Meaitseáil cineál ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Gléas meaitseála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Meaitseáil trácht ar aghaidh atá dírithe ar an seoladh IP ar leith." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Meaitseáil an trácht ar aghaidh atá dírithe ar an gcalafort ceann scríbe nó " +"ar an raon poirt a thugtar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Meaitseáil trácht ar aghaidh ón IP nó an raon seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Meaitseáil an trácht ar aghaidh a thagann as an gcalafort foinseach nó as an " +"raon poirt a thugtar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Cúntóir meaitseála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Meaitseáil trácht isteach atá dírithe ar an gcalafort ceann scríbe nó an " +"raon calafoirt ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Marca meaitseála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Meaitseáil an trácht ag baint úsáide as an gcúntóir rianaithe nasc sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Meaitseálann sé le marc balla dóiteáin sonrach nó raon marcanna éagsúla." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Meaitseálann sé trácht ar aghaidh ag baint úsáide as an ngléas líonra amach " +"sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Meaitseálann sé trácht a iompraíonn an marcáil sonraithe DSCP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Iontrálacha Uasta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Fad Uasta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Uaslíon tosaigh na bpacáit atá le meaitseáil: athmhuirearaítear an uimhir " +"seo gach uair nach sroichtear an teorainn a shonraítear thuas, suas go dtí " +"an uimhir seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Dé Luain" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Laethanta Míosa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Rialacha NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Ligeann rialacha NAT rialú mín ghráinneach ar an IP foinse a úsáid le " +"haghaidh trácht amach nó ar aghaidh." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Ainm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Líonmasc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Dada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Ní hiomlán comhoiriúnach le QOS/méadar cearnach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Ní mheaitseáil ach trácht isteach atá dírithe ar an seoladh IP ar leith." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Ní mheaitseáil ach trácht atá ag teacht isteach ó na MACanna seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Ní mheaitseáil ach trácht atá ag teacht isteach ón IP nó an raon seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Ní mheaitseáil ach trácht atá ag teacht isteach ón gcalafort foinse nó raon " +"calafoirt ar an óstach cliant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Gléas amach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Crios amach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Aschur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Cluiche Réimse Pacáiste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Réimsí paicéad le meaitseáil leo.
Comhréir: direction_datatype. m.sh.: src_port, dest_net.
Treoracha: src, dst. Cineálacha sonraí: ip, port, mac, glan, tacar.
Tá " +"réimíreanna treorach roghnach.
*Tabhair faoi deara: ní thacaítear le " +"cineál data set i fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Cuireann argóintí breise chuig iptables. Úsáid go cúramach!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Trí argóintí amh iptables a chur ar aghaidh chuig rialacha aicmithe tráchta " +"foinse agus cinn scríbe is féidir paicéid a mheaitseáil bunaithe ar chritéir " +"eile seachas comhéadain nó folíonta. Ba cheart na roghanna seo a úsáid go " +"han-chúramach toisc go bhféadfadh luachanna neamhbhailí an tacar rialacha " +"balla dóiteáin a bhriseadh, rud a nochtfadh na seirbhísí go léir go hiomlán." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Conair chuig comhad CIDRanna, folíonta, IPanna óstaigh, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Ligeann cur ar aghaidh calafoirt do ríomhairí cianda ar an Idirlíon ceangal " +"le ríomhaire nó seirbhís ar leith laistigh den LAN príobháideach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Raon calafoirt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Prótacal" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Trácht atá ag teacht isteach a atreorú chuig an gcalafort ar leith ar an " +"óstach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Trácht atá ag teacht isteach a atreorú chuig an óstach inmheán" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Féach do Sraith Seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Criosanna machnaimh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Teastaíonn tacaíocht NAT crua-earraí." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Masquerading a theorannú go fo-líontaí ceann scríbe ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Masquerading a theorannú le fo-líontaí foinse ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Cuir srian le dul i ngleic le" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Seoladh IP a athscríobh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Athscríobh trácht comhoiriúnach chuig an seoladh IP foinse sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Athscríobh trácht comhoiriúnach chuig an gcalafort nó an raon calafort " +"sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Port a athscríobh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Rótar/Díluchtú NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Athscríobh chuig IP nó calafort foinse ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Dé Sathairn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Socraigh marc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Socraigh an luach marc a thugtar ar naisc bhunaithe. Is é an fhormáid luach " +"[/mask]. Má shonraítear masc ansin ní dhéantar ach na giotáin sin atá " +"leagtha amach sa masc a mhodhnú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Díluchtú bogearraí-bhunaithe le haghaidh ródú/NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Díluchtú sreafa bogearraí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Seoladh IP foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Seoladh MAC foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Seoladh foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Source port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Crios foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Sonraíonn sé an riail tráchta seo a cheangal le feiste ar leith líonra " +"isteach nó amach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Sonraíonn sé an seoladh IP seachtrach nó an seoladh IP inmheánach a úsáid le " +"haghaidh tráchta léirithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Dáta Tosaigh (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Am Tosaigh (hh:mm: ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Dáta Stopa (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Am Stop (hh:mm: ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Modh Stórála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Domhnach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Ní mór an chumraíocht balla dóiteáin atá ann cheana a athrú chun LuCi a " +"fheidhmiú i gceart." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Cruthaíonn an balla dóiteáin criosanna thar do chomhéadain líonra chun " +"sreabhadh tráchta líonra a rialú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Rialaíonn na roghanna thíos na polasaithe seolta ar aghaidh idir an crios " +"seo (%s) agus criosanna eile. Clúdaíonn Criosanna Ceann Scríbe " +"trácht ar aghaidh a thagann ó %q. Meaitseálann " +"criosanna foinse trácht ar aghaidh ó chriosanna eile " +"dírithe ar %q. Is é an riail ar aghaidh aontreoch, " +"m.sh. ní déanann ar aghaidh ó lan go wan cead a thabhairt ar " +"aghaidh ó wan go lan freisin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Sainmhíníonn an roinn seo airíonna coitianta % q. Socraíonn na roghanna " +"ionchuir agus aschur na beartais réamhshocraithe don " +"trácht atá ag teacht isteach agus ag imeacht ón gcrios seo agus déanann an " +"rogha ar aghaidh cur síos ar an bpolasaí do thrácht ar aghaidh idir " +"líonraí éagsúla laistigh den chrios. Sonraíonn Líonraí clúdaithe cé " +"na líonraí atá ar fáil atá ina mbaill den chrios seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Déardaoin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Srianta Ama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Am i UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Tá srianta ama cumasaithe don riail seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Teorainn ama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Chuig %{dest}%{dest_device?, comhéadan %{dest_device}} " +"%{dest_ip?, IP %{dest_ip#%{next?, } %{item.ival} }} %{dest_port?, port " +"%{dest_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Chuig %{dest}%{dest_device?, trí chomhéadan %{dest_device}} " +"%{dest_ip?, IP %{dest_ip#%{next?, } %{item.ival} }} %{dest_port?, port " +"%{dest_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Chuig %{dest}%{dest_ip?, IP %{dest_ip#%{ar aghaidh?, } %{item.ival} }} %{dest_port?, port %{dest_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Cúntóir rianaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Rialacha Tráchta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Sainmhíníonn rialacha tráchta beartais maidir le paicéid a thaistealaíonn " +"idir criosanna éagsúla, mar shampla chun trácht a dhiúltú idir óstaigh " +"áirithe nó chun calafoirt WAN a oscailt ar an ródaire." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Dé Máirt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Níorbh fhéidir inneachar a shábháil: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Aonad: soicind. Ciallaíonn réamhshocrú 0 go gcuirtear an " +"iontráil go buan leis an tacar.
Uasmhéid: 2147483 soicind." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Cúntóir conntrack anaithnid nó nach bhfuil suiteáilte “%s”" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT gan ainm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Ar aghaidh gan ainmniú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Riail gan ainmniú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Sraith gan ainmniú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Crios gan ainm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Prótacal neamh-aitheanta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Nuair a bhrú “Lean ar aghaidh”, déanfar rannáin “atreorú” le sprioc “SNAT” a " +"thiontú go rannáin “nat” agus athosófar an balla dóiteáin chun an " +"chumraíocht nuashonraithe a chur i bhfeidhm." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Úsáid seoladh IP seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Úsáid seoladh IP inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Úsáid ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Úsáid an rogha seo chun trácht crios a rangú de réir gairis líonra amha, " +"nach bhfuil á mbainistiú ag uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Úsáid an rogha seo chun trácht crios a rangú de réir foinse nó foghlíon " +"ceann scríbe in ionad líonraí nó feistí." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Teastaíonn marc balla dóiteáin bail" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Dé Céadaoin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Laethanta Seachta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Marca balla dóiteáin XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Marca XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Ní ritheann do ghléas firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Ritheann do ghléas firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Crios ⇒ Seoladh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Criosanna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Criosanna as a gcruthófar rialacha machnaimh. Mura bhfuil sé socraithe, ní " +"úsáidtear ach an crios ceann scríbe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "glacadh le" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "aon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "aon chrios" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "aon éig/go léir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "cuir marc balla dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "cúntóir conntrack a shannadh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "uathoibrithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Níl bitmap ipv4 amháin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "lá" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP ceann scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Ceann scríbe MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Ceann scríbe (fo-) glan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Port Scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Ceann scríbe ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "ná athscríobh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "ná rianú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "titim" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"tacaíonn firewall4 le tagairt a dhéanamh agus le tacair IP a chruthú chun " +"meaitseáil liostaí seoltaí móra a shimpliú gan aon ghá le riail amháin a " +"chruthú in aghaidh na míre le meaitseáil. Ní thacaíonn balla dóiteáin4 le " +"raonta poirt in ipsets.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "uair an chloig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP Addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Le húsáid le cineálacha sonraí Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liosta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "Mac: Mac Addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "nóiméad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "glan: (fo-) glan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "calafort: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "diúltú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "an dara" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "tacar: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "SRC_Set: Foinse ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Foinse IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Foinse MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Foinse (fo-) glan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Port Foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "an gléas seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "an crios nua seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "neamhtheoranta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "neamhshonraithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "suas go dtí 65536 iontráil." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "marc balla dóiteáin bailí" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Díluchtú bunaithe ar bhogearraí le haghaidh Routa/NAT" diff --git a/luci-app-firewall/po/he/firewall.po b/luci-app-firewall/po/he/firewall.po index 008c542aa..74e8c16e8 100644 --- a/luci-app-firewall/po/he/firewall.po +++ b/luci-app-firewall/po/he/firewall.po @@ -1,362 +1,423 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2024-01-10 20:57+0000\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: Hebrew \n" +"Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 5.4-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "יש לציין כתובת IP לשכתוב!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" -msgstr "" +msgstr "פעולה" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "אגד הכתובות והכתובת הפנימיות חייבות להתאים" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "הגדרות מתקדמות" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" -msgstr "" +msgstr "כל" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" -msgstr "" +msgstr "כל יום" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "תגובה" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" +msgstr "המשך" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "" +msgstr "כתובת יעד" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "" +msgstr "פתחת היעד" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" -msgstr "" +msgstr "אזור היעד" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "שם המכשיר" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "" +msgstr "הפעלה" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "פעילה" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -647,172 +807,194 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -822,7 +1004,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -831,22 +1013,30 @@ msgid "" "networks
specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" diff --git a/luci-app-firewall/po/hi/firewall.po b/luci-app-firewall/po/hi/firewall.po index 825fb1625..778f57566 100644 --- a/luci-app-firewall/po/hi/firewall.po +++ b/luci-app-firewall/po/hi/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-07-06 11:32+0000\n" +"Last-Translator: Sathvic \n" "Language-Team: Hindi \n" "Language: hi\n" @@ -12,361 +12,414 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.7-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "उन्नत सेटिंग्स" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "" +msgstr "अग्रेषित करना" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -657,202 +809,194 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -862,7 +1006,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -871,22 +1015,30 @@ msgid "" "networks
specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 -msgid "valid firewall mark" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "MAC" -#~ msgstr "MAC" +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/hu/firewall.po b/luci-app-firewall/po/hu/firewall.po index cf1c6aad5..fe0984fdb 100644 --- a/luci-app-firewall/po/hu/firewall.po +++ b/luci-app-firewall/po/hu/firewall.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2020-03-31 13:27+0000\n" -"Last-Translator: Tamas Szanto \n" +"PO-Revision-Date: 2024-08-20 16:40+0000\n" +"Last-Translator: hmzs \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -10,112 +10,153 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 5.7\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"\"%{src?%{dest?Továbbított:Bejövő}:Kimenő} %{ipv6?%{ipv4?IPv4 és " +"IPv6:IPv6}:IPv4}%{proto?, protokoll\\: " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP típus\\: %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, " +"Jelölő\\: %{mark.val}}%{dscp?, DSCP\\: %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, Segítő\\: " +"%{helper.inv?%{helper.val}:%{helper.val}}}\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- IP-cím hozzáadása --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- MAC-cím hozzáadása --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"%{src?%{dest?Továbbítás:Bemenet}:Kimenet} Elfogadása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "Forrás felülírásának tiltása" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 -msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -"Továbbítás ide: %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Elfogadja a forráscímet (nincs átírás)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"msgstr \"Továbbítás ⇒%{dest}%{dest_ip?" +"%{dest_ip} IP-re}%{dest_port?%{dest_ip? és }%{dest_port} portra}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -"Eldobás %{src?%{dest?forward:input}:output}" +"{src?%{dest?Továbbítás:Bemenet}:Kimenet} Eldobása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"DSCP hozzárendelés\\: " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"%{set_helper} Követés-segítő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"%{set_mark?Hozzárendelt:XOR} tűzfal " +"jelölő\\: %{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Automatikusan átírva a forrás IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"%{src?%{dest?Továbbítás:Bemenet}:Kimenet} kapcsolatkövetés nélkül" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"%{src?%{dest?Továbbítás:Bemenet}:Kimenet} Visszautasítása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"Statikusan átírva, új forrás%{snat_ip? " +"IP\\: %{snat_ip}}%{snat_port?%{snat_ip? és }port\\: " +"%{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "Egy átírási IP-t meg kell adni!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ELFOGADÁS – címátírás letiltása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Művelet" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -125,7 +166,7 @@ msgstr "" "besorolásához, például -p tcp --dport 443 csak a kimenő HTTPS " "forgalom illesztéséhez." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -134,102 +175,122 @@ msgstr "" "besorolásához, például -p tcp --sport 443 csak a bejövő HTTPS " "forgalom illesztéséhez." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Speciális beállítások" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Címcsalád, belső IP-címnek meg kell egyeznie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"A címcsaládnak, a forráscímnek, a célcímnek, az átírási IP-címnek meg kell " +"egyeznie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Haladó beállítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "„Érvénytelen” forgalom engedélyezése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Továbbítás engedélyezése a forrászónákból:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Továbbítás engedélyezése ezekbe a célzónákba:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Bármelyik" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Bármely nap" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -"A megadott érték és a meglévő jelölésérték bitenkénti kizáró vagy " -"műveletének alkalmazása a kiépített kapcsolatokon. A formátum: érték[/" +"A megadott érték és a meglévő jelölőérték bitenkénti XOR (kizáró vagy) műveletének alkalmazása a kiépített kapcsolatokon. A formátum: érték[/" "maszk]. Ha egy maszk meg van adva, akkor a maszkban beállított bitek ki " "lesznek nullázva." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" "A megadott DSCP-osztály vagy érték alkalmazása a kiépített kapcsolatokra." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -"A megadott kapcsolatkövető segítőjének hozzárendelése az illesztett " -"forgalomhoz." +"A megadott kapcsolatkövetés-segítő hozzárendelése az illesztett forgalomhoz." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Automatikus segítő hozzárendelés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -"Kapcsolatkövető segítők automatikus hozzárendelése a forgalom protokollja és " -"portja alapján" +"Kapcsolatkövetés-segítők automatikus hozzárendelése a forgalom protokollja " +"és portja alapján." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Megjegyzés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "Kapcsolatkövető beállításai" +msgstr "Kapcsolatkövető beállítások" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "Kapcsolatkövető segítők" +msgstr "Kapcsolatkövetés-segítők" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "A tartalom mentésre került." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" -msgstr "Tovább" +msgstr "Folytatás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Számlálók" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Lefedett eszközök" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Lefedett hálózatok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Lefedett alhálózatok" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Egyéni szabályok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -240,37 +301,37 @@ msgstr "" "parancsok minden tűzfal-újraindítás után végrehajtásra kerülnek, közvetlenül " "az alapértelmezett szabálykészletek betöltődése után." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "DSCP osztályozás" +msgstr "DSCP-osztályozás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "DSCP jelölés" +msgstr "DSCP jelölő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "DSCP jelölés szükséges" +msgstr "DSCP jelölő szükséges" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Célcím" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Célport" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Célzóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "Eszköz neve" +msgstr "Eszköznév" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -278,115 +339,156 @@ msgstr "" "Ne telepítsen további szabályokat az érvénytelen kapcsolatkövető " "állapottal rendelkező továbbított forgalom visszautasításához." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Érvénytelen csomagok eldobása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Engedélyezés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "NAT visszacsatolás engedélyezése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "SYN-elárasztás elleni védelem engedélyezése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Naplózás engedélyezése ezen a zónán" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Engedélyezze az IPv4-es hálózati cím- és portfordítást (NAT4 vagy NAPT4) a " +"kimenő forgalomhoz ebben a zónában. Ez általában a wan zónában van " +"engedélyezve." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Engedélyezze az IPv6-os hálózati cím- és portfordítást (NAT6 vagy NAPT6) a " +"kimenő forgalomhoz ebben a zónában." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Engedélyezve" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Engedélyezi a csomag- és bájtszám nyomon követését a készlet számára." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "Elvárás: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Kísérleti funkció. Nem teljesen kompatibilis a QoS/SQM használatával." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -"Határozottan kiválasztja az engedélyezett kapcsolatkövető segítőket a " +"Egyértelműen kiválasztja az engedélyezett kapcsolatkövetés-segítőket a " "zónaforgalomhoz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Külső IP-cím" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Külső port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "További argumentumok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "További célargumentumok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "További iptables argumentumok" +msgstr "További iptables argumentumok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "További forrásargumentumok" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Család" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Tűzfal" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Tűzfal – egyéni szabályok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Tűzfal - IP-készletek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Tűzfal – NAT szabályok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Tűzfal – porttovábbítások" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Tűzfal – forgalmi szabályok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "Tűzfal – Zóna beállításai" +msgstr "Tűzfal – zónabeállítások" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Tűzfal szabályok áttelepítése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Továbbítás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" +"Továbbított %{ipv6?%{ipv4?IPv4 és IPv6:IPv6}:IPv4}%{proto?, protokoll\\: %{proto#%{next?, }%{item." +"name}}}%{mark?, Jelölő\\: %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Péntek" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"Innen: %{src}%{src_device?, csatoló\\: %{src_device}}%{src_ip?, " +"IP\\: %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port\\: " +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" +"Innen: %{src}%{src_device?, csatoló\\: %{src_device}}%{src_ip?, " +"IP\\: %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port\\: " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC\\: " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" +"Innen: %{src}%{src_ip?, IP\\: %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port\\: %{src_port#%{next?, }%{item.ival}" +"}}%{src_mac?, MAC\\: %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "Általános beállítások" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Jogosultság adása a tűzfal beállításához" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "Hardveres áramláskiürítés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (tartomány)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-készletek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-k/Hálózatok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-k/Hálózatok/MAC-címek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 és IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Csak IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 álcázás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Csak IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Bejövő eszköz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Belevett fájl" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Bejövő: %{ipv6?%{ipv4?IPv4 és IPv6:IPv6}:" +"IPv4}%{proto?, protokoll\\: %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"típus\\: %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, Jelölő\\: %{mark.val}}%{helper?, Segítő\\: " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Kezdeti hash méret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Bemenet" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Belső IP-cím" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Belső port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Belső zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 -msgid "Invalid DSCP mark" -msgstr "Érvénytelen DSCP jelölés" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Érvénytelen DSCP jelölő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Érvénytelen korlátérték" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 -msgid "Limit burst" -msgstr "Löket korlátozása" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Érvénytelen készlet név" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Löketek korlátozása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Naplóüzenetek korlátozása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Illesztés korlátozása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" +"Korlátozás: %{limit.num} csomag / %{limit.unit}%{limit." +"burst?, %{limit.burst} löket}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Korlátozott álcázás engedélyezve" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "Korlátozza a megadott sebességre illeszkedő forgalmat." +msgstr "Korlátozza az illeszkedő forgalmat a megadott sebességre." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "Visszacsatolás forrás IP" +msgstr "Visszacsatolt forrás IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "ÁLCÁZÁS – átírás automatikusan a kimenő csatoló IP-jére" +msgstr "ÁLCÁZÁS – automatikus átírás a kimenő csatoló IP-jére" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSS összefogás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Álcázás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Illesztés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "DSCP illesztése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "ICMP-típus illesztése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "Eszköz illesztése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "A megadott IP-címre irányított továbbított forgalom illesztése." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "A megadott célportra vagy porttartományra irányított továbbított forgalom " "illesztése." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "Erről az IP-ről vagy tartományról továbbított forgalom illesztése." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" "A megadott forrásportról vagy porttartományból eredő továbbított forgalom " "illesztése." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "Illesztési segítő" +msgstr "Illesztés-segítő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -581,31 +782,42 @@ msgstr "" "Az ezen a gépen lévő megadott célportra vagy porttartományra irányított " "bejövő forgalom illesztése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "Jelölés illesztése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." -msgstr "Forgalom illesztése a megadott kapcsolatkövető segítő használatával." +msgstr "Forgalom illesztése a megadott kapcsolatkövetés-segítő használatával." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -"Egy bizonyos tűzfaljelölést vagy különböző jelölések tartományát illeszti." +"Egy bizonyos tűzfaljelölőt vagy különböző jelölők tartományát illeszti." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" "A megadott kimeneti hálózati eszköz használatával illeszti a továbbított " "forgalmat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." -msgstr "A megadott DSCP jelölést szállító forgalmat illeszti." +msgstr "" +"A megadott DSCP jelölést használva " +"illeszti a forgalmat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Max bejegyzés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Max hossz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -614,22 +826,22 @@ msgstr "" "minden alkalommal, amikor a fent meghatározott korlátot nem érik el, " "legfeljebb eddig a számig." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Hétfő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Hónap napjai" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "NAT szabályok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -637,27 +849,44 @@ msgstr "" "A NAT szabályok lehetővé teszik a részletes szabályozást a kimenő vagy " "továbbított forgalomnál használandó forrás IP fölött." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Név" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" +"Nem teljesen kompatibilis a QoS / SQM használatával." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Csak a megadott IP-címre irányított bejövő forgalom illesztése." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." -msgstr "Csak ezekről a MAC-ekről érkező bejövő forgalom illesztése." +msgstr "Csak ezekről a MAC-címekről érkező bejövő forgalom illesztése." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" "Csak erről az IP-ről vagy tartományból érkező bejövő forgalom illesztése." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -665,29 +894,46 @@ msgstr "" "Csak az ügyfélgépen lévő megadott forrásportról vagy porttartományból eredő " "bejövő forgalom illesztése" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "Kimeneti eszköz" +msgstr "Kimenő eszköz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Kimenő zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Kimenet" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Csomagmező illesztés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"A megfelelő csomagmezők.
Elrendezés: direction_datatype. pl.: " +"src_port, dest_net.
Útvonal: src, dst. " +"Adattípusok: ip, port, mac, net, set.
Az irány előtagok " +"nem kötelezőek.
Megjegyzés: a set adattípust az fw4 nem " +"támogatja." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -"Átadja a további argumentumokat az iptables részére. Használja " +"Átadja a további argumentumokat az iptables részére. Használja " "körültekintően!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -702,12 +948,19 @@ msgstr "" "tönkre tehetik a tűzfalszabálykészleteket, ezáltal teljesen feltárva az " "összes szolgáltatást." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"Elérési út a CIDR-ek, alhálózatok, gazdagép IP-" +"címek, stb. fájlhoz.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Porttovábbítások" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -716,115 +969,131 @@ msgstr "" "személyes helyi hálózat bizonyos számítógépéhez vagy szolgáltatásához " "történő csatlakozását." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Port tartomány" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" -msgstr "Egyező bejövő forgalom átirányítása a belső gép megadott portjára" +msgstr "Egyező bejövő forgalom átirányítása a belső gép megadott portjára." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" -msgstr "Egyező bejövő forgalom átirányítása a megadott belső gépre" +msgstr "Egyező bejövő forgalom átirányítása a megadott belső gépre." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "Hardveres NAT támogatás szükséges. Legalább az mt7621-hez megvalósítva" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Lásd: Külső készlet" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Tükrözési zónák" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" +"Hardveres NAT támogatás szükséges." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" -msgstr "Álcázás korlátozása a megadott célalhálózatokra" +msgstr "Álcázás korlátozása a megadott cél-alhálózatokra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" -msgstr "Álcázás korlátozása a megadott forrás alhálózatokra" +msgstr "Álcázás korlátozása a megadott forrás-alhálózatokra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Korlátozás címcsaládra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "IP-cím átírása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "Illesztett forgalom átírása a megadott forrás IP-címre." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "Illesztett forgalom átírása a megadott forrásportra vagy porttartományra." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Port átírása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "Útválasztás vagy NAT kiürítés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT – átírás egy adott forrás IP-re vagy portra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Szombat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "Jelölés beállítása" +msgstr "Jelölő beállítása" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -"A megadott jelölésérték beállítása a kiépített kapcsolatokon. A formátum: " +"A megadott jelölőérték beállítása a kiépített kapcsolatokon. A formátum: " "érték[/maszk]. Ha egy maszk meg van adva, akkor csak a maszkban beállított " "bitek lesznek módosítva." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Szoftver alapú kiürítés az útválasztásnál vagy NAT-nál" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Szoftveres áramláskiürítés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Forrás IP-cím" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Forrás MAC-cím" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Forráscím" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Forrásport" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Forrászóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -832,7 +1101,7 @@ msgstr "" "Meghatározza, hogy ezt a forgalomszabályt egy adott bejövő vagy kimenő " "hálózati eszközhöz kell kötni." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -840,47 +1109,52 @@ msgstr "" "Meghatározza, hogy a külső vagy a belső IP-címet használja a visszatükrözött " "forgalomnál." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" -msgstr "Kezdés dátuma (ÉÉÉÉ-HH-NN)" +msgstr "Kezdés dátuma
(ÉÉÉÉ-HH-NN)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Kezdés ideje (ÓÓ.PP.MM)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Kezdés ideje
(ÓÓ.PP.MM)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" -msgstr "Leállítás dátuma (ÉÉÉÉ-HH-NN)" +msgstr "Leállítás dátuma
(ÉÉÉÉ-HH-NN)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Leállítás ideje (ÓÓ.PP.MM)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Leállítás ideje
(ÓÓ.PP.MM)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Tárolási módszer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Vasárnap" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"A meglévő tűzfalkonfigurációt módosítani kell a LuCI megfelelő működéséhez." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -"A tűzfal zónákat hoz létre a hálózati csatolók fölött a hálózati forgalom " +"A tűzfalzónákat hoz létre a hálózati csatolók fölött a hálózati forgalom " "áramlásának szabályozásához." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -897,7 +1171,7 @@ msgstr "" "LAN-ból WAN-ba nem jelenti azt, hogy a továbbítás WAN-ból LAN-ba is " "engedélyezett." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -912,22 +1186,30 @@ msgstr "" "belül. A lefedett hálózatok adják meg, hogy mely elérhető hálózatok " "tagjai ennek a zónának." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Csütörtök" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Időkorlátozások" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Idő UTC szerint" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Időkorlátozások engedélyezettek ennél a szabálynál" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Időtúllépés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" +"Ide: %{dest}%{dest_device?, csatoló\\: %{dest_device}}%{dest_ip?, " +"IP\\: %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port\\: " +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" +"Ide: %{dest}%{dest_device?, csatolón át\\: %{dest_device}}%{dest_ip?, IP\\: %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port\\: %{dest_port#%{next?, }%{item.ival}" +"}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" +"Ide: %{dest}%{dest_ip?, IP\\: %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port\\: %{dest_port#%{next?, }%{item.ival}" +"}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" -msgstr "Követési segítő" +msgstr "Követés-segítő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Forgalmi szabályok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "A forgalmi szabályok a különböző zónák között utazó csomagokra vonatkozó " "szabályokat határozzák meg, például bizonyos gépek közötti forgalom " "visszautasításához vagy WAN portok megnyitásához az útválasztón." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Kedd" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Nem lehet elmenteni a tartalmat: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 -msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "Ismeretlen vagy nem telepített kapcsolatkövető segítő: „%s”" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Mértékegység: másodperc. Max: 2 147 483 másodperc.
Az alapértelmezett " +"0 azt jelenti, hogy a bejegyzés véglegesen hozzáadódik a " +"készlethez." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ismeretlen vagy nem telepített kapcsolatkövetés-segítő: „%s”" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "Névtelen NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Névtelen továbbítás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Névtelen szabály" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Névtelen beállítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Névtelen zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Ismeretlen protokoll" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" +"A „Folytatás” gomb megnyomására a \"SNAT\" célú \"átirányítás\" szakaszok " +"\"NAT\" szakaszokká alakulnak, és a tűzfal újraindul a frissített " +"beállítások alkalmazásához." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Külső IP-cím használata" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Belső IP-cím használata" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1032,7 +1352,7 @@ msgstr "" "Használja ezt a beállítást a zónaforgalom nyers, nem uci által " "kezelt hálózati eszközök szerint történő besorolásához." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1040,415 +1360,283 @@ msgstr "" "Használja ezt a beállítást a zónaforgalom forrás- vagy célalhálózat szerint " "történő besorolásához a hálózatok vagy eszközök helyett." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "Érvényes tűzfaljelölés szükséges" +msgstr "Érvényes tűzfaljelölő szükséges" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Szerda" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Hétköznapok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "kizáró vagy tűzfaljelölés" +msgstr "XOR tűzfaljelölő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" -msgstr "kizáró vagy jelölés" +msgstr "XOR jelölő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Az eszközön nem firewall4 fut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Az eszközön firewall4 fut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zóna ⇒ Továbbítások" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zónák" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zónák, amikből tükrözési szabályokat kell létrehozni. Ha nincs beállítva, " +"csak a célzóna kerül felhasználásra." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "elfogadás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "bármely" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "bármely zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "bármely/mind" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" -msgstr "tűzfaljelölés alkalmazása" +msgstr "tűzfaljelölő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" -msgstr "kapcsolatkövető segítő hozzárendelése" +msgstr "kapcsolatkövetés-segítő" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatikus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bittérkép" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "csak ipv4 bittérkép" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "nap" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Cél IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Cél MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Cél-(al)hálózat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Célport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Cél ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "ne írja át" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "ne kövessen" +msgstr "nincs követés" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "eldobás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"A firewall4 támogatja a hivatkozást és az IP-készletek létrehozását, hogy " +"leegyszerűsítse a nagy címlisták egyeztetését anélkül, hogy elemenként egy " +"szabályt kellene létrehozni. A firewall4 nem támogatja az IP-készletekbenben " +"található porttartományokat.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "porttól-portig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "óra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Használja az egyező adattípusokhoz: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "perc" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (al)hálózat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "visszautasítás" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "másodperc" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 -msgid "this device" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Forrás ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Forrás IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Forrás MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Forrás-(al)hálózat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Forrásport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "ez az eszköz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "ez az új zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "korlátlan" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "nincs meghatározva" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "65 536 bejegyzésig." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "érvényes tűzfaljelölés" +msgstr "érvényes tűzfaljelölő" -#~ msgid "Rewrite to" -#~ msgstr "Átírás erre:" - -#~ msgid "Rewrite to outbound device IP" -#~ msgstr "Átírás a kimenő eszköz IP-jére" - -#~ msgid "%s in %s" -#~ msgstr "%s ebben: %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s ezzel: %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s ebben: %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d csomag / %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d csomag / %s, löket %d csomag" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s és korlátozás erre: %s" - -#~ msgid "Accept forward" -#~ msgstr "Továbbítás elfogadása" - -#~ msgid "Accept input" -#~ msgstr "Bemenet elfogadása" - -#~ msgid "Accept output" -#~ msgstr "Kimenet elfogadása" - -#~ msgid "Destination IP address" -#~ msgstr "Cél IP-cím" - -#~ msgid "Discard forward" -#~ msgstr "Továbbítás elvetése" - -#~ msgid "Discard input" -#~ msgstr "Bemenet elvetése" - -#~ msgid "Discard output" -#~ msgstr "Kimenet elvetése" - -#~ msgid "Do not rewrite" -#~ msgstr "Ne írja felül" - -#~ msgid "Do not track forward" -#~ msgstr "Ne kövesse a továbbítást" - -#~ msgid "Do not track input" -#~ msgstr "Ne kövesse a bemenetet" - -#~ msgid "Do not track output" -#~ msgstr "Ne kövesse a kimenetet" - -#~ msgid "Forward to" -#~ msgstr "Továbbítás ide" - -#~ msgid "From %s in %s" -#~ msgstr "Innen: %s, ebben: %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Innen: %s, ebben: %s, ezzel a forrással: %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Innen: %s, ebben: %s, ezekkel a forrásokkal: %s és %s" - -#~ msgid "From %s on this device" -#~ msgstr "Ettől: %s, ezen az eszközön" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "Ettől: %s, ezen az eszközön, ezzel a forrással: %s" - -#~ msgid "From %s on this device with source %s and %s" +#~ msgid "Software based offloading for routing/NAT" #~ msgstr "" -#~ "Ettől: %s, ezen az eszközön, ezekkel a forrásokkal: %s és %s" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "IP-tartomány" - -#~ msgid "IPs" -#~ msgstr "IP-k" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MAC-ek" - -#~ msgid "Network" -#~ msgstr "Hálózat" - -#~ msgid "Refuse forward" -#~ msgstr "Továbbítás visszautasítása" - -#~ msgid "Refuse input" -#~ msgstr "Bemenet visszautasítása" - -#~ msgid "Refuse output" -#~ msgstr "Kimenet visszautasítása" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Ide: %s, ekkor: %s, ezen az eszközön" - -#~ msgid "To %s in %s" -#~ msgstr "Ide: %s, ebben: %s" - -#~ msgid "To %s on this device" -#~ msgstr "Ide: %s, ezen az eszközön" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Erre: %s, %s ebben: %s" - -#~ msgid "Via %s" -#~ msgstr "Ezen keresztül: %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Ezen keresztül: %s, itt: %s" - -#~ msgid "any host" -#~ msgstr "bármely gép" - -#~ msgid "any router IP" -#~ msgstr "bármely útválasztó IP" - -#~ msgid "not" -#~ msgstr "nem" - -#~ msgid "port" -#~ msgstr "port" - -#~ msgid "ports" -#~ msgstr "portok" - -#~ msgid "type" -#~ msgstr "típus" - -#~ msgid "types" -#~ msgstr "típusok" - -#~ msgid "Force connection tracking" -#~ msgstr "Kapcsolat követés kényszerítése" - -#~ msgid "Add" -#~ msgstr "Hozzáadás" - -#~ msgid "Add and edit..." -#~ msgstr "Hozzáadás és szerkesztés..." - -#~ msgid "External zone" -#~ msgstr "Külső zóna" - -#~ msgid "New SNAT rule" -#~ msgstr "Új SNAT szabály" - -#~ msgid "New forward rule" -#~ msgstr "Új továbbítási szabály" - -#~ msgid "New input rule" -#~ msgstr "Új bemeneti szabály" - -#~ msgid "New port forward" -#~ msgstr "Új port továbbítás" - -#~ msgid "New source NAT" -#~ msgstr "Új forrás NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Port megnyitása a routeren" - -#~ msgid "Other..." -#~ msgstr "Egyéb..." - -#~ msgid "To source IP" -#~ msgstr "Forrás IP-re" - -#~ msgid "To source port" -#~ msgstr "Forrás portra" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Névtelen bejegyzés)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Névtelen szabály)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(Névtelen SNAT)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Zónák-közötti továbbítás" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Továbbított forgalom szűrése a megadott cél port, vagy port tartomány " -#~ "szerint." - -#~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "" -#~ "Az ügyfél gép megadott portjáról, vagy port tartományából indított " -#~ "forgalom szűrése. " - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Az összeíllő forgalom átírása a megadott címre." - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Az összeillő forgalom átírása a megadott forrás portra. Amennyibe üresen " -#~ "van hagyva, csak az IP cím kerül átírásra." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Átírás %s forrásra" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Átírás %s, %s forrásra" - -#~ msgid "SNAT IP address" -#~ msgstr "SNAT IP cím" - -#~ msgid "SNAT port" -#~ msgstr "SNAT port" - -#~ msgid "Source NAT" -#~ msgstr "Forrás NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "A forrás NAT az álcázás olyan speciális formája, mely lehetővé teszi a " -#~ "kimenő forgalomhoz használt forrás IP címek aprólékos szabályozását, " -#~ "például több WAN cím hozzárendelését a belső alhálózatokhoz." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Ez a lap lehetővé teszi a port továbbítási bejegyzések speciális " -#~ "tulajdonságainak módosítását. A legtöbb esetben ezeknek a beállításoknak " -#~ "a módosítása nem szükséges." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Ez a lap lehetővé teszi a forgalmi szabály bejegyzés speciális " -#~ "tulajdonságainak módosítását, mint a forrás- és célgépek megfeleltetése." - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Az \"-- egyéni --\" lehetőség választásával több protokoll megadása " -#~ "lehetséges egymástól szóközzell elválasztva." - -#~ msgid "Zone %q" -#~ msgstr "Zóna %q" +#~ "Szoftver alapú kiürítés az útválasztásnál vagy NAT-nál." diff --git a/luci-app-firewall/po/id/firewall.po b/luci-app-firewall/po/id/firewall.po new file mode 100644 index 000000000..01fc4bc3f --- /dev/null +++ b/luci-app-firewall/po/id/firewall.po @@ -0,0 +1,1474 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2023-08-31 08:31+0000\n" +"Last-Translator: Charles03010 \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- tambahkan IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- tambahkan MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +" Terima %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr " Cegah penulisan ulang sumber" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Teruskan ke %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Jatuhkan%{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Tetapkan klasifikasi DSCP %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Tetapkan conntrack helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Tetapkan:XOR} tanda firewall " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Menulis ulang IP sumber secara otomatis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Jangan lacak %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Tolak %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +#, fuzzy +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Tulis secara statis ke sumber %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "IP penulisan ulang harus ditentukan!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Nonaktifkan penulisan ulang alamat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Aksi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argumen iptables mentah tambahan untuk mengklasifikasikan lalu " +"lintas tujuan zona, misalnya -p tcp --dport 443 agar hanya " +"cocok dengan lalu lintas HTTPS keluar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argumen mentah iptables tambahan untuk mengklasifikasikan lalu " +"lintas sumber zona, mis. -p tcp --sport 443 agar hanya " +"mencocokkan lalu lintas HTTPS masuk." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Setelan Lanjutan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Izinkan lalu lintas \"tidak valid\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Izinkan forward dari zona sumber :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Izinkan forward ke zona tujuan :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Apapun" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Setiap hari" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Terapkan XOR bitwise dari nilai yang diberikan dan nilai tanda yang ada pada " +"koneksi yang dibuat. Formatnya adalah nilai[/mask]. Jika mask ditentukan " +"maka bit-bit yang diatur dalam mask tersebut dinolkan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Terapkan kelas atau nilai DSCP yang diberikan ke koneksi yang dibuat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Tetapkan pembantu pelacakan koneksi yang ditentukan ke lalu lintas yang " +"cocok." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Penetapan pembantu otomatis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Diaktifkan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "meneruskan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Setelan Umum" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "zona apapun" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "terapkan tanda firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "tetapkan conntrack helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "hari" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "jangan menulis ulang" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "jangan lacak" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "buang" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "jam" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "menit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "tolak" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "detik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "peranti ini" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "zona baru ini" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "tak terbatas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "tidak ditentukan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "tanda firewall valid" diff --git a/luci-app-firewall/po/it/firewall.po b/luci-app-firewall/po/it/firewall.po index 31b3ecd9b..dbc799dd8 100644 --- a/luci-app-firewall/po/it/firewall.po +++ b/luci-app-firewall/po/it/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-03-03 13:34+0000\n" -"Last-Translator: TuxAlex0 \n" +"PO-Revision-Date: 2024-07-13 20:44+0000\n" +"Last-Translator: Random \n" "Language-Team: Italian \n" "Language: it\n" @@ -12,208 +12,286 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 5.7-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 e " +"IPv6:IPv6}:IPv4}%{proto?, protocollo " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP con tipi %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, assistente %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- aggiungi IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" -msgstr "" +msgstr "-- aggiungi MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"Accetta %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" +"Previeni la riscrittura dell'origine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"Inoltra a %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? porta %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Scarta (drop)%{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"Assegna classificazione DSCP " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"Assegna assistente conntrack " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"Contrassegno firewall %{set_mark?Assign:XOR} %{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Riscrivi automaticamente l'IP di " +"origine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Non rintracciare %{src?%{dest?forward:" +"input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"Rifiuta (reject) %{src?%{dest?forward:" +"input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"Riscrivi staticamente verso l'origine " +"%{snat_ip?IP %{snat_ip}} %{snat_port?porta %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "È necessario specificare un IP di riscrittura!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "ACCETTA - Disattiva riscrittura degli indirizzi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Azione" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" +"Ulteriori argomenti grezzi di iptables per classificare il traffico " +"di destinazione della zona, ad es. -p tcp --dport 443 per il " +"solo traffico HTTPS in uscita." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" +"Ulteriori argomenti grezzi di iptables per classificare il traffico " +"di origine della zona, ad es. -p tcp --sport 443 per il solo " +"traffico HTTPS in ingresso." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "La famiglia di indirizzi e l'indirizzo IP interno devono corrispondere" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Impostazioni Avanzate" +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"La famiglia di indirizzi, l'indirizzo di origine, l'indirizzo di " +"destinazione e l'indirizzo IP di riscrittura devono corrispondere" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Impostazioni avanzate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "Consenti traffico \"non valido\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "Permetti routing da zone di origine:" +msgstr "Consenti l'inoltro da zone di origine:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" -msgstr "Permetti rounting a zone di destinazione:" +msgstr "Consenti l'inoltro a zone di destinazione:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Qualsiasi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Qualsiasi giorno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" +"Applica uno XOR bit a bit del valore dato e il valore contrassegno esistente " +"sulle connessioni stabilite. Il formato è valore[/maschera]. Se una maschera " +"è specificata allora quei bit impostati nella maschera sono azzerati." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." -msgstr "" +msgstr "Applica la classe o il valore DSCP dato per le connessioni stabilite." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" +"Assegna l'assistente di tracciamento di connessione specificato al traffico " +"corrispondente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" -msgstr "" +msgstr "Assegnazione automatica dell'assistente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" +"Assegna automaticamente gli assistenti conntrack in base al protocollo e " +"alla porta di traffico" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Commento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "" +msgstr "Impostazioni di conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "" +msgstr "Assistenti di conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "" +msgstr "I contenuti sono stati salvati." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" -msgstr "" +msgstr "Continua" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contatori" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Dispositivi coperti" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Reti coperte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Sottoreti coperte" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" -msgstr "Regole Personalizzate" +msgstr "Regole personalizzate" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -224,149 +302,195 @@ msgstr "" "comandi sono eseguiti dopo ogni riavvio del firewall, giusto dopo le altre " "regole che sono state caricate." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "" +msgstr "Classificazione DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "Contrassegno DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "" +msgstr "Contrassegno DSCP richiesto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Indirizzo di destinazione" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Porta di destinazione" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Zona di destinazione" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Nome dispositivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" +"Non installare regole extra per rifiutare il traffico inoltrato con lo stato " +"conntrack non valido. Può essere necessario per configurazioni di " +"instradamenti asimmetrici complesse." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "Scarta pacchetti invalidi" +msgstr "Scarta (drop) pacchetti non validi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "Abilita" +msgstr "Abilitare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "Attiva NAT Loopback" +msgstr "Attiva loopback NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Attiva protezione SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Attiva registro su questa zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Attiva la traduzione di indirizzo di rete e porta IPv4 (NAT4 o NAPT4) per il " +"traffico in uscita su questa zona. È tipicamente attivata nella zona " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Attiva la traduzione di indirizzo di rete e porta IPv6 (NAT6 o NAPT6) per il " +"traffico in uscita su questa zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Abilita" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Attiva il monitoraggio del conto di pacchetti e byte per il set." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "Previsto: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" +"Sceglie esplicitamente gli assistenti autorizzati del monitoraggio delle " +"connessioni per il traffico della zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" -msgstr "Indirizzo IP Esterno" +msgstr "Indirizzo IP esterno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" -msgstr "Porta Esterna" +msgstr "Porta esterna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" -msgstr "Comandi extra" +msgstr "Argomenti extra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" -msgstr "" +msgstr "Argomenti di destinazione extra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "" +msgstr "Argomenti di iptables extra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" -msgstr "" +msgstr "Argomenti di origine extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Famiglia" #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" -msgstr "Firewall - Regole Personalizzate" +msgstr "Firewall - Regole personalizzate" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Set di IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" -msgstr "" +msgstr "Firewall - Regole NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "Firewall - Inoltro Porte" +msgstr "Firewall - Inoltro porte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "Firewall - Regole Traffico" +msgstr "Firewall - Regole di traffico" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "Firewall - Opzioni delle Zone" +msgstr "Firewall - Impostazioni zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Migrazione configurazione del firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Inoltra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" +"Inoltrato %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocollo %{proto#%{next?, }%{item.name}}}%{mark?, contrassegno %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Venerdì" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"Da %{src}%{src_device?, interfaccia %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, porta " +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" +"Da %{src}%{src_device?, interfaccia %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, porta " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" +"Da %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, porta %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "Impostazioni Generali" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 -msgid "Hardware flow offloading" +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Concedi l'accesso alla configurazione del firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Scarico del flusso hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (intervallo)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Set di IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/Reti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/Reti/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 e IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Solo IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Masquerading IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Solo IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" -msgstr "" +msgstr "Dispositivo di ingresso" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Includi file" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" +"In ingresso %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocollo %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"con tipi %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, contrassegno %{mark.val}}%{helper?, " +"assistente %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Dimensione hash iniziale" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" -msgstr "Ingresso" +msgstr "In entrata" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Indirizzo IP interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Porta interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" -msgstr "Zona Interna" +msgstr "Zona interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Inoltro zona intra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "Contrassegno DSCP non valido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" -msgstr "" +msgstr "Valore di limite non valido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nome set non valido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" -msgstr "" +msgstr "Limite di raffica" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Limita messaggi del registro" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" -msgstr "" +msgstr "Limita corrispondenza" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" +"Limita la corrispondenza a %{limit.num} pacchetti per " +"%{limit.unit}%{limit.burst? burst %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Masquerading limitato attivato" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "" +msgstr "Limita il traffico corrispondente alla velocità specificata." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "" +msgstr "IP di origine loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" +"MASQUERADE - Riscrivi automaticamente all'IP dell'interfaccia in uscita" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" -msgstr "" +msgstr "Ancoraggio MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" -msgstr "" +msgstr "Masquerading" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Corrispondenza" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "" +msgstr "Corrispondi DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" -msgstr "Corrispondenza tipo ICMP" +msgstr "Corrispondi tipo ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "" +msgstr "Corrispondi dispositivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." -msgstr "" +msgstr "Corrispondi il traffico inoltrato diretto all'indirizzo IP indicato." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" +"Corrispondi traffico inoltrato diretto alla porta o all'intervallo di porte " +"di destinazione." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." -msgstr "" +msgstr "Corrispondi il traffico inoltrato da questo IP o intervallo." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" +"Corrispondi il traffico inoltrato derivante dalla porta o dall'intervallo di " +"porte di origine." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "" +msgstr "Corrispondi assistente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -"Corrispondi traffico in entrata diretto alla porta o intervallo di porte " -"dato su questo host" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 -msgid "Match mark" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 -msgid "Match traffic using the specified connection tracking helper." -msgstr "" +"Corrispondi il traffico in ingresso diretto alla porta o all'intervallo di " +"porte su questo host" #: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Corrispondi contrassegno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Corrispondi il traffico usando l'assistente di monitoraggio della " +"connessione specificato." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" +"Corrisponde un contrassegno specifico del firewall o un intervallo di " +"diversi contrassegni." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" +"Corrisponde il traffico inoltrato usando il dispositivo di rete in uscita " +"specificato." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" +"Corrisponde il traffico che trasporta il contrassegno DSCP specificato." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Elementi massimi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Dimensione massima" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" +"Numero massimo iniziale di pacchetti da corrispondere: questo numero viene " +"ricaricato da uno ogni volta che il limite specificato sopra non è " +"raggiunto, fino a questo numero." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Lunedì" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" -msgstr "Giorni del Mese" +msgstr "Giorni del mese" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "Regole NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" +"Le regole NAT consentono un controllo granulare sull'IP di origine da usare " +"per il traffico in uscita o inoltrato." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Maschera di rete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" +"Non completamente compatibile con QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Corrispondi solo traffico in entrata diretto al dato indirizzo IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Corrispondi solo traffico in entrata da questi MAC." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Corrispondi solo traffico in entrata da questo IP o intervallo." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -632,27 +895,44 @@ msgstr "" "Corrispondi solo traffico in entrata originato dalla porta o intervallo di " "porte sorgenti su host cliente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "" +msgstr "Dispositivo di uscita" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" -msgstr "" +msgstr "Zona di uscita" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" -msgstr "" +msgstr "In uscita" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Corrispondenza campo pacchetto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"I campi dei pacchetti da corrispondere.
Sintassi: " +"direction_datatype. es.: src_port, dest_net.
Direzioni: src, dst. Tipi di dati: ip, port, mac, net, " +"set.
I prefissi di direzione sono facoltativi.
*Nota: il " +"tipo di dati set non è supportato in fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "Passa comandi addizionali a iptables. Usare con cura!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -660,189 +940,207 @@ msgid "" "invalid values could render the firewall ruleset broken, completely exposing " "all services." msgstr "" +"Passare argomenti grezzi di iptables alle regole di classificazione del " +"traffico di origine e di destinazione, consente di corrispondere i pacchetti " +"in base ad altri criteri rispetto a interfacce o sottoreti. Queste opzioni " +"dovrebbero essere usate con estrema cura, in quanto valori non validi " +"possono invalidare le regole del firewall, esponendo completamente tutti i " +"servizi." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Percorso al file dei CIDR, sottoreti, IP host, ecc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" -msgstr "Inoltri Porta" +msgstr "Inoltro porte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -"L'inoltro delle porte permette ai computer in remoto su Internet di " -"connettersi a uno specifico computer o servizio presente nella LAN privata" +"L'inoltro delle porte permette a computer remoti su Internet di connettersi " +"a uno specifico computer o servizio presente nella LAN privata." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Intervallo di porte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protocollo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "Reindirizza il traffico in entrata alla porta data su host interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Reindirizza il traffico in entrata allo specifico host interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Fare riferimento a set esterno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zone riflettive" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Richiede supporto NAT hardware." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Limita il Masquerading alle subnet di destinazione date" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Limita il Masquerading alle subnet sorgente date" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Limita agli indirizzi famiglia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "Riscrivi l'indirizzo IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" +"Riscrivi il traffico corrispondente sull'indirizzo IP di origine specificato." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" +"Riscrivi il traffico corrispondente sulla porta o intervallo di porte di " +"origine specificate." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Riscrivi porta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "" +msgstr "Scarico dell'instradamento/NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Riscrivi sull'IP o porta di origine specificati" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Sabato" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "" +msgstr "Imposta contrassegno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" +"Imposta il valore del contrassegno sulle connessioni stabilite. Il formato è " +"valore[/maschera]. Se una maschera è specificata allora solo quei bit " +"impostati nella maschera sono modificati." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "" +msgstr "Scarico del flusso software" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# msgid "Traffic Redirection" -# msgstr "" -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# msgid "Overview" -# msgstr "" -# msgid "Name" -# msgstr "" -# msgid "Source zone" -# msgstr "" -# msgid "Source MAC-address" -# msgstr "" -# msgid "Source port" -# msgstr "" -# msgid "Protocol" -# msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Indirizzo IP di origine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Indirizzo MAC di origine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Indirizzo di origine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Porta di origine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zona di origine" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" +"Specifica se legare questa regola di traffico a uno specifico dispositivo di " +"rete in ingresso o in uscita." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" +"Specifica se usare l'indirizzo IP esterno o interno per il traffico riflesso." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Data di Inizio (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Ora di inizio (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Data di Stop (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Ora di fine (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Metodo di archiviazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Domenica" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"L'attuale configurazione del firewall deve essere modificata affinché LuCI " +"funzioni correttamente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -850,8 +1148,8 @@ msgstr "" "Il firewall crea delle zone nelle tue interfacce di rete per controllare il " "flusso del traffico." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -868,7 +1166,7 @@ msgstr "" "alla wan non implica anche un permesso da inoltrare dalla wan alla " "lan." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -883,22 +1181,30 @@ msgstr "" "differenti nella zona. Le reti coperte specificano quali reti " "disponibili sono membri di questa zona." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Giovedì" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" -msgstr "" +msgstr "Restrizioni temporali" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Orario in UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Le restrizioni temporali sono attive per questa regola" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Scadenza" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" +"Verso %{dest}%{dest_device?, interfaccia %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, porta %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" +"Verso %{dest}%{dest_device?, via interfaccia %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, porta %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" +"Verso %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, porta %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" -msgstr "" +msgstr "Assistente di monitoraggio" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Regole di Traffico" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Le regole del traffico definiscono il metodo per il viaggio dei pacchetti " "tra zone differenti, per esempio per rifiutare il traffico tra certi host o " "per aprire porte WAN sul router." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Martedì" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" -msgstr "" +msgstr "Impossibile salvare i contenuti: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unità: secondi. Il predefinito 0 significa che la voce viene " +"aggiunta in modo permanente al set.
Max: 2147483 secondi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "" +msgstr "Assitente conntrack sconosciuto o non installato \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "NAT senza nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" -msgstr "" +msgstr "Inoltro senza nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Regola senza nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Set senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Zona senza nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Protocollo non riconosciuto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" +"Dopo aver premuto \"Continua\", le sezioni \"reindirizza\" con destinazione " +"\"SNAT\" saranno convertite in sezioni \"nat\" e il firewall verrà riavviato " +"per applicare la configurazione aggiornata." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Usa l'indirizzo IP esterno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" -msgstr "" +msgstr "Usa l'indirizzo IP interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Usa ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" +"Usa questa opzione per classificare il traffico di zona da dispositivi di " +"rete gestiti grezzi, nonuci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" +"Usa questa opzione per classificare il traffico di zona per origine o " +"sottorete di destinazione, invece di reti o dispositivi." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "" +msgstr "Contrassegno firewall valido richiesto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Mercoledì" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Giorni della Settimana" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "" +msgstr "Contrassegno firewall XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" -msgstr "" +msgstr "Contrassegno XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Il dispositivo non sta eseguendo firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Il dispositivo sta eseguendo firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zona ⇒ Inoltri" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zone da cui devono essere create regole riflettive. Se non impostato, viene " +"usata solo la zona di destinazione." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "accetta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "qualsiasi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "qualsiasi zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "qualsiasi/tutti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" -msgstr "" +msgstr "applica contrassegno firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" -msgstr "" +msgstr "assegna assistente conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap è solo ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "giorno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 -msgid "do not rewrite" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP di destinazione" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: indirizzo MAC di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (sotto)rete di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: porta di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: ipset* di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "non riscrivere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "non tracciare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" -msgstr "scarta" +msgstr "scarta (drop)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 supporta il riferimento e la creazione di set di IP per " +"semplificare la corrispondenza di liste di indirizzi di grandi dimensioni, " +"senza la necessità di creare una regola per elemento da abbinare. Gli " +"intervalli di porte in ipsets non sono supportati da firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" -msgstr "" +msgstr "ora" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: indirizzo IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Da usare per i tipi di dati Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: indirizzo MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" -msgstr "" +msgstr "minuto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sotto)rete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" -msgstr "rifiuta" +msgstr "rifiuta (reject)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" -msgstr "" +msgstr "secondo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: ipset* di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: indirizzo MAC di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (sotto)rete di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: porta di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" -msgstr "" +msgstr "questo dispositivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "questa nuova zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "illimitato" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" -msgstr "" +msgstr "non specificato" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "fino a 65536 voci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "" +msgstr "contrassegno firewall valido" -#~ msgid "%s%s with %s" -#~ msgstr "%s%s con %s" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s e limita a %s" - -#~ msgid "Accept input" -#~ msgstr "Accetta input" - -#~ msgid "Accept output" -#~ msgstr "Accetta output" - -#~ msgid "Destination IP address" -#~ msgstr "Indirizzo IP destinazione" - -#~ msgid "Do not rewrite" -#~ msgstr "Non riscrivere" - -#~ msgid "Forward to" -#~ msgstr "Inoltra a" - -#~ msgid "From %s in %s" -#~ msgstr "Da %s a %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Da %s a %s con sorgente %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Da %s a %s con sorgente %s e %s" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "Intervallo IP" - -#~ msgid "IPs" -#~ msgstr "IPs" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MACs" - -#~ msgid "Network" -#~ msgstr "Rete" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Verso %s a %s su questo dispositivo" - -#~ msgid "To %s in %s" -#~ msgstr "Verso %s in %s" - -#~ msgid "To %s on this device" -#~ msgstr "Verso %s su questo dispositivo" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Verso %s, %s in %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Via %s a %s" - -#~ msgid "any host" -#~ msgstr "qualsiasi host" - -#~ msgid "any router IP" -#~ msgstr "qualsiasi router IP" - -#~ msgid "not" -#~ msgstr "non" - -#~ msgid "ports" -#~ msgstr "porti" - -#~ msgid "types" -#~ msgstr "tipi" - -#~ msgid "Force connection tracking" -#~ msgstr "Forza tracciamento connessione" - -#~ msgid "Restart Firewall" -#~ msgstr "Riavvia Firewall" - -#~ msgid "Add" -#~ msgstr "Aggiungi" - -#~ msgid "Add and edit..." -#~ msgstr "Aggiungi e modifica..." - -#~ msgid "External zone" -#~ msgstr "Zona Esterna" - -#~ msgid "New SNAT rule" -#~ msgstr "Nuova regola SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Nuova regola di inoltro" - -#~ msgid "New input rule" -#~ msgstr "Nuova regola di ingresso" - -#~ msgid "New port forward" -#~ msgstr "Nuova porta di inoltro" - -#~ msgid "New source NAT" -#~ msgstr "Nuova sorgente NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Porte aperte sul router" - -#~ msgid "Other..." -#~ msgstr "Altri..." - -#~ msgid "To source IP" -#~ msgstr "Verso IP sorgente" - -#~ msgid "To source port" -#~ msgstr "Verso la porta sorgente" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Inoltro tra le zone" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Corrispondi traffico inoltrato alla porta o intervallo di porte dato." - -#~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "" -#~ "Corrispondi traffico in entrata originato dalla porta o intervallo di " -#~ "porte dato su host cliente" - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Riscrivi il traffico verso l'indirizzo dato." - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Riscrivi il traffico corrispondente alla porta sorgente data. Può essere " -#~ "lasciato vuoto per riscrivere solo l'indirizzo IP." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Riscrivi alla sorgente %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Riscrivi alla sorgente %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "Indirizzo IP SNAT" - -#~ msgid "SNAT port" -#~ msgstr "Porta SNAT" - -#~ msgid "Source NAT" -#~ msgstr "NAT di origine" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "La sorgente NAT è una forma specifica di masquerading che consente un " -#~ "controllo preciso sull'IP sorgente usato per il traffico in uscita, per " -#~ "esempio per mappare indirizzi WAN multipli verso le subnet interne." - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "Ora di Inizio (hh:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "Ora di Stop (hh:mm:ss)" - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Questa pagina ti consente di cambiare le opzioni avanzate della voce " -#~ "porta di inoltro. Nella maggioranza dei casi non serve modificare queste " -#~ "impostazioni." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Questa pagina ti consente di cambiare le opzioni avanzate della voce " -#~ "regola del traffico, come la sorgente corrispondente e gli host di " -#~ "destinazione." - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Puoi specificare multipli selezionando \"-- custom --\" e poi inserendo i " -#~ "protocolli separati da uno spazio." - -#~ msgid "Zone %q" -#~ msgstr "Zona %q" - -#~ msgid "traffic" -#~ msgstr "traffico" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Scarico basato sul software per instradamento/NAT" diff --git a/luci-app-firewall/po/ja/firewall.po b/luci-app-firewall/po/ja/firewall.po index 7c97d27f4..7fa750ac5 100644 --- a/luci-app-firewall/po/ja/firewall.po +++ b/luci-app-firewall/po/ja/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-02-22 11:57+0000\n" -"Last-Translator: INAGAKI Hiroshi \n" +"PO-Revision-Date: 2024-10-09 05:48+0000\n" +"Last-Translator: Monarch \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -12,98 +12,106 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11.1\n" +"X-Generator: Weblate 5.8-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" "%{ipv6?%{ipv4?IPv4IPv6:IPv6}:IPv4} の %{src?%{dest?転送:受信}:送信}%{proto?, プロトコル %{proto#" -"%{next?, }%{item.types?%{item.name}" -"含まれる ICMP タイプ - %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, マーク " -"%{mark.val}}%{dscp?, DSCP %{dscp." -"inv?%{dscp.val}:%{dscp.val}}}%{helper?, ヘルパー " -"%{helper.inv?%{helper.val}:%{helper." -"val}}}" +"var>} の %{src?%{dest?転送:受信}:送信}%{proto?, プロトコル " +"%{proto#%{next?, }%{item.types?%{item." +"name}含まれる ICMP タイプ - %{item." +"types#%{next?, }%{item}}:%{item.name}}}}%{mark?, マーク %{mark.val}" +"}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, ヘルパー %{helper.inv?%{helper.val}" +":%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- IP を追加 --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- MAC を追加 --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "%{src?%{dest?転送:受信}:送信} を 許可" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "アクセス元の書き換えを防止" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -"%{dest}%{dest_ip? IP %{dest_ip}}%{dest_port? port " -"%{dest_port}} へ転送" +"%{dest}%{dest_ip? IP %{dest_ip}}%{dest_port? port " +"%{dest_port}} へ転送" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "%{src?%{dest?転送:受信}:送信} を 破棄" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" "DSCP 区分の割り当て - %{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -"conntrack ヘルパーの割り当て - %{set_helper}" +"conntrack ヘルパーの割り当て - " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" "ファイアウォール マークの%{set_mark?割り当て:XOR}" " - %{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" "アクセス元 IP を 自動的に書き換え" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" @@ -111,37 +119,37 @@ msgstr "" "%{src?%{dest?転送:受信}:送信} を追跡しない" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" "%{src?%{dest?転送:受信}:送信} を拒否" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -"アクセス元 %{snat_ip?IP %{snat_ip}} %{snat_port?ポート " -"%{snat_port}} への静的書き換え" +"アクセス元 %{snat_ip?IP %{snat_ip}} %{snat_port?ポート " +"%{snat_port}} への静的書き換え" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "書き換え先 IP の指定が必要です!" +msgstr "書き換え先 IP の指定が必要です!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ACCEPT - アドレス書き換えを無効化" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "アクション" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -151,7 +159,7 @@ msgstr "" "em> 引数です。(例: HTTPS 送信トラフィックのみにマッチさせる -p tcp --" "dport 443)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -160,95 +168,117 @@ msgstr "" "em> 引数です。(例: HTTPS 受信トラフィックのみにマッチさせる -p tcp --" "sport 443)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "詳細設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "\"invalid\" トラフィックの許可" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "送信元ゾーンからの転送を許可する:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "宛先ゾーンへの転送を許可する:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" -msgstr "全て" +msgstr "すべて" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "全日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" +"確立された接続に、指定された値と既存のマーク値のビット単位のXORを適用します。" +"形式は値 [/mask]です。マスクが指定されている場合、マスクに設定されているビッ" +"トはゼロになります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "指定された DSCP クラスまたは値を確立された接続に適用します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "指定された接続追跡ヘルパーを対象のトラフィックに割り当てます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "自動ヘルパー割り当て" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" "トラフィックのプロトコルとポートに基づいて、 conntrack ヘルパーを自動的に割り" "当てます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "コメント" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Conntrack 設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Conntrack ヘルパー" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "内容が保存されました。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "続行" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "カバーされるデバイス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "対象ネットワーク" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "カバーされるサブネット" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "手動設定ルール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -259,156 +289,182 @@ msgstr "" "ドは、ファイアウォール機能の起動ごとに、標準のルールが読み込まれた後に実行さ" "れます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "DSCP 区分" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "DSCP マーク" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "DSCP マークが必要です" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "宛先アドレス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "宛先ポート" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "宛先ゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "デバイス名" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" "conntrack ステートが invalid である転送されたトラフィックを拒否する" -"追加ルールをインストールしません。これは、複雑で非対称なルートのセットアップ" -"に必要となることがあります。" +"追加ルールをインストールしない。これは、複雑で非対称なルートのセットアップに" +"必要となることがあります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "無効なパケットを遮断する" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "有効" +msgstr "有効化" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "NATループバックを有効にする" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "SYN-Floodプロテクションを有効にする" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "このゾーンのログ記録を有効にする" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "期待される値: %s" +msgstr "%sである必要があります" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "実験的な機能です。 QoS/SQM との完全な互換性はありません。" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "ゾーン トラフィックの接続追跡ヘルパーを明示的に選択します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "外部IPアドレス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "外部ポート" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "追加の引数" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "追加の送信先引数" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "追加の iptables 引数" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "追加の送信元引数" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "ファイアウォール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "ファイアウォール - 手動設定ルール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "ファイアウォール - NAT ルール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "ファイアウォール - ポートフォワーディング" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "ファイアウォール - トラフィック・ルール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "ファイアウォール - ゾーン設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "ファイアウォール設定マイグレーション" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "転送" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -"IPv4 の転送%{proto?, プロトコル %{proto#%{next?, }%{item.name}}}%{mark?, マーク %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "金曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, ポート " "%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"%{item.val}.\"}>%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }" +"%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -"送信元: %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"ポート %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#" -"%{next?, }%{item.ival}}}" +"送信元: %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, ポート %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "一般設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "ファイアウォール構成へのアクセスを許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "ハードウェア フローオフロード" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP セット" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4及びIPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "IPv4のみ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "IPv6のみ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "受信側デバイス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -"IPv4 の受信%{proto?, プロトコル %{proto#%{next?, }%{item.types?%{item.name}含まれる " -"ICMP タイプ - %{item.types#%{next?, }%{item}}:" -"%{item.name}}}}%{mark?, マーク IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark " -"%{mark.val}}%{helper?, ヘルパー %{helper.inv?%{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "受信" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "内部IPアドレス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "内部ポート" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "内部ゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "無効な DSCP マーク" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "無効な制限値" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "バースト制限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "ログメッセージを制限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "一致の制限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" @@ -561,71 +668,76 @@ msgstr "" "一致するパケット数を %{limit.unit} あたり %{limit.num} " "に制限%{limit.burst?(バースト %{limit.burst})}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "限定的なマスカレードが有効" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "トラフィックを指定されたレートに制限します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "ループバック元 IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "MASQUERADE - 自動的に送信側インターフェース IP へ書き換え" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSSクランプ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "マスカレード" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "対象" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "DSCP の一致" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "ICMPタイプの一致" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "デバイスの一致" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "指定された IP アドレスに転送されるトラフィックが対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "指定されたポートまたはポート範囲に転送されるトラフィックが対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "この IP または範囲からのトラフィックが対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" "指定された送信元ポートまたはポート範囲から発信されたトラフィックが対象になり" "ます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "ヘルパーの一致" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -633,31 +745,39 @@ msgstr "" "設定された宛先ポート(またはポート範囲)に一致した受信トラフィックが対象になり" "ます" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "マークの一致" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "指定された接続追跡ヘルパーを使用するトラフィックが対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" "特定のファイアウォール マークまたは異なる複数のマークの範囲が対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" "指定された送信側ネットワーク デバイスを使用して転送されるトラフィックが対象に" "なります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "指定された DSCP マークを持っているトラフィックが対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -665,22 +785,22 @@ msgstr "" "対象となるパケットの最初の最大数です。この数は、上のレート制限で上限に到達し" "なかった場合に、その時間毎にここで指定された数まで1ずつ回復します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "月曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "月間" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "NAT ルール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -688,28 +808,42 @@ msgstr "" "NAT ルールは、送信または転送トラフィックのために使用するアクセス元 IP に対し" "て、とても細かな制御を可能にします。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "名前" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "QoS/SQM との完全な互換性はありません。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "設定された宛先IPアドレスと一致した受信トラフィックが対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "設定されたMACアドレスと一致した受信したトラフィックが対象になります。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" "設定されたIPアドレス (または範囲) と一致した受信したトラフィックが対象になり" "ます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -717,29 +851,41 @@ msgstr "" "設定されたクライアントホストの送信元ポート(またはポート範囲)からの受信トラ" "フィックと一致したトラフィックのみを対象にします。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "送信側デバイス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "送信側ゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "送信" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -"iptablesにパススルーする追加の引数を設定してください。ただし、注意して設定し" -"てください!" +"iptablesにパススルーする追加の引数を設定してください。注意して設定してくださ" +"い!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -753,12 +899,16 @@ msgstr "" "し、全サービスを外部に晒す恐れがあることに、特段の注意を払い使用されなければ" "なりません。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "ポートフォワーディング" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -767,76 +917,89 @@ msgstr "" "ベートなネットワーク上の、特定のコンピュータやサービスへのアクセスを可能にし" "ます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "プロトコル" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "ルールに一致した受信トラフィックを、内部ホストの設定されたポートへ転送します" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "ルールに一致した受信トラフィックを、設定された内部ホストへ転送します" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -"ハードウェア NAT サポートが必要です。 mt7621 のみにおいて実装されています。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "ハードウェア NAT サポートが必要です。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "設定された宛先サブネットへのマスカレードを制限する" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "設定された送信元サブネットへのマスカレードを制限する" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "アドレスファミリの制限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "IP アドレスの書き換え" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "対象のトラフィックを指定されたアクセス元 IP アドレスに書き換えます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "対象のトラフィックを指定されたアクセス元ポートまたはポート範囲に書き換えま" "す。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "ポートの書き換え" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "ルーティング/NAT オフロード" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - 特定のアクセス元 IP またはポートへの書き換え" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "土曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "マークの設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -844,40 +1007,40 @@ msgstr "" "確立された接続にマーク値を設定します。フォーマットは value[/mask] です。もし" "マスクが指定されている場合、マスクによって有効なビットのみ設定されます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "ルーティング/NAT のための、ソフトウェアベースのオフロードです。" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "ソフトウェア フローオフロード" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "送信元IPアドレス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "送信元MACアドレス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "送信元アドレス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "送信元ポート" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "送信元ゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -885,7 +1048,7 @@ msgstr "" "このトラフィック ルールを関連付ける、特定の受信側または送信側ネットワークデバ" "イスを指定します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -893,32 +1056,36 @@ msgstr "" "反映されるトラフィックに対し、外部または内部 IP アドレスのどちらを使用するか" "を指定します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "開始日 (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "開始時刻 (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "開始時刻 (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "停止日 (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "停止時刻 (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "停止時刻 (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "日曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." @@ -926,7 +1093,7 @@ msgstr "" "既存のファイアウォール設定は、 LuCI が正常に機能するように変更する必要があり" "ます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -934,8 +1101,8 @@ msgstr "" "ファイアウォール機能は、各ネットワークインターフェース上にゾーンを作成してト" "ラフィックの制御を行います。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -951,7 +1118,7 @@ msgstr "" "向
であり、例えばlanからwanへの転送設定は、wanからlanへの転送を許可し" "ません。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -965,22 +1132,30 @@ msgstr "" "準のポリシーになります。対象ネットワークは、どのネットワーク設定がこ" "のゾーンに属するかを設定します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "木曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "時間制限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "UTC時刻を使用" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "このルールでは時間制限が有効です" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" "送信先: %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, ポート %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "追跡ヘルパー" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "トラフィック・ルール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "トラフィック・ルールの設定では、ゾーン間を行き来するパケットのポリシーを設定" "します。例えば、特定のホスト間や、ルーターのWANポートへのトラフィックの拒否を" "設定することができます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "火曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "内容を保存できません: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "不明またはインストールされていない conntrack ヘルパー \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "名称未設定の NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "名称未設定の転送" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "名称未設定のルール" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "名称未設定のゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "認識されていないプロトコル" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " @@ -1086,15 +1271,21 @@ msgstr "" "\"nat\" セクションに変換されたうえで、ファイアウォールは更新された設定を適用" "するために再起動されます。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "外部 IP アドレスを使用" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "内部 IP アドレスを使用" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1102,7 +1293,7 @@ msgstr "" "生の、または非 uci 管理下にあるデバイスによるゾーン トラフィックの区" "分にこのオプションを使用します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1110,339 +1301,311 @@ msgstr "" "ネットワークまたはデバイスに代わり、アクセス元またはアクセス先サブネットによ" "るゾーン トラフィックの区分にこのオプションを使用します。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "有効なファイアウォール マークが必要です" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "水曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "曜日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "ファイアウォール マークの XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "マークの XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "ゾーン ⇒ 転送" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "ゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "許可" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" -msgstr "全て" +msgstr "すべて" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" -msgstr "全てのゾーン" +msgstr "すべてのゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "ファイアウォール マークの適用" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "conntrack ヘルパーの割り当て" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "書き換えない" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "コネクション追跡を行わない" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "破棄" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "時間" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "分" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "拒否" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "秒" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "このデバイス" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "この新しいゾーン" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "無制限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" -msgstr "設定しない" +msgstr "未設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "有効なファイアウォール マーク" -#~ msgid "%s in %s" -#~ msgstr "%s (%s)" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s ,%s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s (%s)" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d パケット / %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "" -#~ "%d パケット / %s, バースト %d パケット" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s, %s を上限に設定" - -#~ msgid "Accept forward" -#~ msgstr "転送を許可" - -#~ msgid "Accept input" -#~ msgstr "入力を許可" - -#~ msgid "Accept output" -#~ msgstr "出力を許可" - -#~ msgid "Discard forward" -#~ msgstr "転送を破棄" - -#~ msgid "Discard input" -#~ msgstr "入力を破棄" - -#~ msgid "Discard output" -#~ msgstr "出力を破棄" - -#~ msgid "Do not rewrite" -#~ msgstr "リライトしない" - -#~ msgid "Do not track forward" -#~ msgstr "転送を追跡しない" - -#~ msgid "Do not track input" -#~ msgstr "入力を追跡しない" - -#~ msgid "Do not track output" -#~ msgstr "出力を追跡しない" - -#~ msgid "Forward to" -#~ msgstr "転送先" - -#~ msgid "From %s in %s" -#~ msgstr "送信元 %s (%s)" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "送信元 %s (%s) , %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "送信元 %s (%s) , %s, %s" - -#~ msgid "From %s on this device" -#~ msgstr "送信元 %s (デバイス)" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "送信元 %s, %s (デバイス)" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "送信元 %s, %s, %s (デバイス)" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "IP の範囲" - -#~ msgid "IPs" -#~ msgstr "IP" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MAC" - -#~ msgid "Network" -#~ msgstr "ネットワーク" - -#~ msgid "Refuse forward" -#~ msgstr "転送を拒否" - -#~ msgid "Refuse input" -#~ msgstr "入力を拒否" - -#~ msgid "Refuse output" -#~ msgstr "出力を拒否" - -#~ msgid "To %s at %s on this device" -#~ msgstr "宛先 %s, %s (デバイス)" - -#~ msgid "To %s in %s" -#~ msgstr "宛先 %s (%s)" - -#~ msgid "To %s on this device" -#~ msgstr "宛先 %s (デバイス)" - -#~ msgid "To %s, %s in %s" -#~ msgstr "宛先 %s, %s (%s)" - -#~ msgid "Via %s" -#~ msgstr "経由 %s" - -#~ msgid "Via %s at %s" -#~ msgstr "経由 %s , %s" - -#~ msgid "any host" -#~ msgstr "全てのホスト" - -#~ msgid "any router IP" -#~ msgstr "全てのルーターIP" - -#~ msgid "port" -#~ msgstr "ポート" - -#~ msgid "ports" -#~ msgstr "ポート" - -#~ msgid "type" -#~ msgstr "タイプ" - -#~ msgid "types" -#~ msgstr "タイプ" - -#~ msgid "Force connection tracking" -#~ msgstr "強制的にコネクション追跡を行う" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "ルーティング/NAT のための、ソフトウェアベースのオフロードです。" #~ msgid "" -#~ "Prevent the installation of NOTRACK rules which would bypass " -#~ "connection tracking." +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "コネクション追跡をバイパスさせる NOTRACK ルールのインストールを防" -#~ "ぎます。" +#~ "IPv4 の転送%{proto?, プロトコル %{proto#%{next?, }%{item.name}}}%{mark?, マーク %{mark." +#~ "val}}" -#~ msgid "Disable" -#~ msgstr "無効" - -#~ msgid "Restart Firewall" -#~ msgstr "ファイアウォールの再起動" - -#~ msgid "Rule is disabled" -#~ msgstr "ルールは無効です" - -#~ msgid "Rule is enabled" -#~ msgstr "ルールは有効です" - -#~ msgid "Add" -#~ msgstr "追加" - -#~ msgid "Add and edit..." -#~ msgstr "追加及び編集..." - -#~ msgid "External zone" -#~ msgstr "外部ゾーン" - -#~ msgid "New SNAT rule" -#~ msgstr "SNATルールの新規作成" - -#~ msgid "New forward rule" -#~ msgstr "転送ルールの新規作成" - -#~ msgid "New input rule" -#~ msgstr "受信ルールの新規作成" - -#~ msgid "New port forward" -#~ msgstr "転送設定の新規作成" - -#~ msgid "New source NAT" -#~ msgstr "SNATルールの新規作成" - -#~ msgid "Open ports on router" -#~ msgstr "ポートの開放" - -#~ msgid "Other..." -#~ msgstr "その他のプロトコル" - -#~ msgid "To source IP" -#~ msgstr "変換後送信元IP" - -#~ msgid "To source port" -#~ msgstr "変換後送信元ポート" +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "IPv4 の受信%{proto?, プロトコル %{proto#%{next?, }%{item.types?%{item.name}含" +#~ "まれる ICMP タイプ - %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, マーク %{mark.val}}%{helper?, ヘルパー %{helper.inv?" +#~ "%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/ka/firewall.po b/luci-app-firewall/po/ka/firewall.po new file mode 100644 index 000000000..5da118413 --- /dev/null +++ b/luci-app-firewall/po/ka/firewall.po @@ -0,0 +1,1460 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-06-29 16:09+0000\n" +"Last-Translator: Temuri Doghonadze \n" +"Language-Team: Georgian \n" +"Language: ka\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- დაემატოს IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- დაემატოს MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"მიღება %{src?%{dest?გადაგზავნილი:" +"შემავალი}:გამომავალი}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "წყაროს ჩანაცვლების არიდება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"გადამისამართება %{dest}%{dest_ip? IP-" +"მისამართზე %{dest_ip}}%{dest_port? პორტი %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"აცილება %{src?%{dest?გადაგზავნილი:შემავალი}:" +"გამომავალი}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"საწყისი IP-მისამართის თავისთავად " +"ჩანაცვლება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"მისამართების ჯგუფი, საწყისი მისამართი, საბოლოო მისამართი, ჩანაცვლების IP-" +"მისამართი შესაფერისი უნდა იყოს" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "გაფართოებული პარამეტრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "გადამისამართების ნებართვა საწყისი არედან:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "გადაგზავნის ნებართვა საბოლოო არეებში:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "ნებისმიერი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "ნებისმიერი დღე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "შენიშვნა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack-პარამეტრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack-დამხმარე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "შემცველობა შენახულია." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "გაგრძელება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "მთვლელები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "მითითებული წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "საბოლოო მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "საბოლოო პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "საბოლოო არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "მოწყობილობის სახელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "გაუმართავი კრებულების აცილება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "ამოქმედდეს NAT-უკუკავშირი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-flood-დაცვის ჩართვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "აღრიცხვის ჩართვა ამ არესთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"ამოქმედდეს ქსელისა და პორტის გარდაქმნა IPv4 (NAT4 ან NAPT4) გამავალი " +"ნაკადისთვის ამ არეში. ჩვეულებრივ მოქმედია ხოლმე wan არეში." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"ამოქმედდეს ქსელისა და პორტის გარდაქმნა IPv6 (NAT6 ან NAPT6) გამავალი " +"ნაკადისთვის ამ არეში." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "მოქმედია" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "გარე IP-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "გარე პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "დამატებითი არგუმენტები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "დამატებით არგუმენტები საბოლოო წერტილისთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "დამატებითი არგუმენტები საწყისი წერტილისთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "ჯგუფი" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "ქსელის ფარი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "ქსელის ფარი - მითითებული წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "ქსელის ფარი - IP-ნაკრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "ქსელის ფარი - NAT-წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "ქსელის ფარი - პორტის გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "ქსელის ფარი - მიმოცვლის წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "ქსელის ფარი - არეების გამართვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "ქსელის ფარის გამართვის გადატანა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "გადაგზავნა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "პარასკევი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "ზოგადი პარამეტრები" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "ქსელის ფარის გამართვასთან წვდომის ნებართვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "ნაკადის აპარატურული განტვირთვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-ები/ქსელები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-ები/ქსელები/MAC-ები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 და IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 მხოლოდ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 შენიღბვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 მხოლოდ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "შემავალი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "შიდა IP-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "შიდა პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "შიდა არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "უკუკავშირის წყაროს IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "მაქს. ჩანაწერები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "უმაღლესი სიგრძე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "ორშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "თვის დღეები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-წესების მეშვეობით უკეთ შეიძლება იმართოს საწყისი IP გამავალი ან " +"გადამისამართებული ნაკადისთვის." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "სახელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "სრულად თავსებადი არ იქნება QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "გამომავალი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "პორტის გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"პორტის გადამისამართებით მოშორებულ კომპიუტერებს ინტერნეტით შეეძლება " +"ადგილობრივი ქსელის რომელიმე კომპიუტერთან ან მომსახურებასთან წვდომა." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "ოქმი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "ესაჭიროება აპარატურული NAT-მხარდაჭერა." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "შენიღბვის აკრძალვა მოცემული საბოლოო ქვექსელებისკენ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "მისამართის ჯგუფის შეზღუდვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "დამისამართება/NAT-განტვირთვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - ჩანაცვლება ზოგიერთი საწყისი IP-ისა თუ პორტისა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "შაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "ნაკადის პროგრამული განტვირთვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "საწყისი IP-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "საწყისი MAC-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "საწყისი მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "საწყისი პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "საწყისი არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "დაწყების თარიღი (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "დაწყების დრო (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "შეწყვეტის თარიღი (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "შეწყვეტის დრო (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "შენახვის ხერხი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "კვირა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"ქსელის ფარის არსებული გამართვა უნდა შეიცვალოს, რომ LuCI სათანადოდ მუშაობდეს." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"ქსელის ფარი ქმნის არეებს ქსელის მაკავშირებლებს შორის მიმოცვლილი მონაცემების " +"სამართავად." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "ოთხშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "დროის შეზღუდვები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "დროის შეზღუდვები ამოქმედებულია ამ წესისთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "მოლოდინის ვადა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "მიმოცვლის წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"მიმოცვლის წესებით განისაზღვრება დებულებები კრებულთა მიმოცვლისთვის არეებს " +"შორის, მაგალითად, ცალკეული წყაროდან მომავალი მონაცემების ასაკრძალად ან გარე " +"პორტების გასახსნელად როუტერზე." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "სამშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "ვერ შეინახა შიგთავსი: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "უსახელო NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "უსახელო გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "უსახელო წესი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "უსახელო ნაკრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "უსახელო არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "დაუდგენელი ოქმი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "გარე IP-მისამართის გამოყენება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "შიდა IP-მისამართის გამოყენება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"ამ პარამეტრის გამოყენება არეებში მიმოცვლის დასახარისხებლად საწყისი ან " +"საბოლოო ქვექსელით, ნაცვლად ქსელებით ან მოწყობილობებით." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "ქსელის ფარის მართებული ნიშანია საჭირო" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "ოთხშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "კვირის დღეები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "ქსელის ფარის XOR-ნიშანი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR-ნიშანი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "თქვენს მოწყობილობაზე არაა გაშვებული firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "თქვენს მოწყობილობაზე გაშვებულია firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "არე ⇒ გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "არეები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "მიღება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "ნებისმიერი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "ნებისმიერი არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "ნებისმიერი/ყველა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "დღე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: საბოლოო IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: საბოლოო MAC-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: საბოლოო (ქვე)ქსელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: საბოლოო პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "ჩანაცვლების გარეშე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "მიდევნების გარეშე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "აცილება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "ჰეში" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "საათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "სია" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "წუთი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "უარყოფა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "წამი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: საწყისი IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: საწყისი MAC-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: საწყისი (ქვე)ქსელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: საწყისი პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "ეს მოწყობილობა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "ახალი არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "შეუზღუდავი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "არ მითითებულა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "65536 ჩანაწერამდე." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "პროგრამული სახით განიტვირთება დამისამართება/NAT" diff --git a/luci-app-firewall/po/ko/firewall.po b/luci-app-firewall/po/ko/firewall.po index 02c610889..46f4dc0d7 100644 --- a/luci-app-firewall/po/ko/firewall.po +++ b/luci-app-firewall/po/ko/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2022-11-22 08:46+0000\n" +"Last-Translator: Taewook Yang (ワリ) \n" "Language-Team: Korean \n" "Language: ko\n" @@ -12,360 +12,417 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 4.15-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- IP 추가 --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" +msgstr "-- MAC 주소 추가 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" -msgstr "" +msgstr "액션" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "고급 설정" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Source zone 로부터의 forward 허용:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Destination zone 으로 forward 허용:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" -msgstr "Custom Rule" +msgstr "사용자 규칙" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -"Custom rule 은 방화벽 UI 로 해결이 되지 않는 임의의 iptables 명령을 실행할 " -"수 있도록 합니다. 입력된 명령어들은 매 방화벽 재시작시 실행되는데 default " -"ruleset 이 load 된 후 시점입니다." +"사용자 규칙을 사용하면 방화벽 프레임워크로 해결이 되지 않는 임의의 iptables " +"명령을 실행할 수 있습니다. 입력된 명령어들은 매 방화벽 재시작시 default " +"ruleset을 불러온 직후 실행됩니다." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "Destination 주소" +msgstr "목적지 주소" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "활성화" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "NAT Loopback 활성화" +msgstr "NAT 루프백 활성화" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "SYN-flood protection 활성화" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" -msgstr "zone 의 logging 활성화" +msgstr "해당 Zone 의 로그 활성화" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "외부 IP 주소" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" -msgstr "외부 port" +msgstr "외부 포트" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" -msgstr "추가 argument" +msgstr "추가 변수" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "방화벽" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" -msgstr "방화벽 - Custom Rules" +msgstr "방화벽 - 사용자 규칙" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 -msgid "Firewall - NAT Rules" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "방화벽 - NAT 규칙" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "방화벽 - Port Forwards" +msgstr "방화벽 - 포트 포워드" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "방화벽 - Traffic Rules" +msgstr "방화벽 - 트래픽 규칙" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "방화벽 - Zone 설정" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "방화벽 구성 마이그레이션" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "" +msgstr "포워드" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "금요일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" +msgstr "기본 설정" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" -msgstr "" +msgstr "IPv4와 IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" +msgstr "IPv4 전용" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "" +msgstr "IPv6 전용" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" +msgstr "인바운드 장치" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" -msgstr "" +msgstr "입력" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "내부 IP 주소" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" -msgstr "내부 port" +msgstr "내부 포트" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" -msgstr "내부 zone" +msgstr "내부 Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "잘못된 DSCP 마크" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" +msgstr "잘못된 limit 값" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" -msgstr "" +msgstr "로그 메시지 제한" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "" +msgstr "루프백 소스 IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "월요일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "이름" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "iptables 명령에 추가 인자들을 더합니다. 조심해 사용하세요!" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "iptables 명령에 추가 변수들을 전달합니다. 주의하여 사용하세요!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -656,12 +812,16 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Port Forward" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -669,154 +829,172 @@ msgstr "" "Port forwarding 기능은 인터넷 상의 원격 컴퓨터가 내부 LAN 에 속한 특정 컴퓨터" "나 서비스에 접속할 수 있도록 합니다." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 -msgid "Protocol" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "프로토콜" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "주어진 destination subnet 으로 Masquerading 제한" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "주어진 source subnet 으로 Masquerading 제한" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Address family 제한" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "토요일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Source IP 주소" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Source MAC 주소" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Source 주소" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "시작 날짜 (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "종료 날짜 (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "일요일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -824,8 +1002,8 @@ msgstr "" "방화벽 기능을 이용하여 네트워크 인터페이스와 연결된 zone 을 생성할 수 있고 이" "를 이용하여 네트워크 traffic flow 를 제어할 수 있습니다." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -841,8 +1019,7 @@ msgstr "" "unidirectional 인데, 예를 들어 LAN 에서 WAN 으로의 forward 규칙이 " "WAN 에서 LAN 으로의 forward 를 허락하는 것이 아닙니다." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -850,28 +1027,36 @@ msgid "" "forwarded traffic between different networks within the zone. Covered " "networks specifies which available networks are members of this zone." msgstr "" -"이 섹션은 %q 의 공통 속성을 설정할 수 있습니다. input 과 " -"output 옵션은 이 zone 으로 전달되어 들오거나 나가는 트래픽에 대한 기" -"본 정책을 뜻합니다. forward 옵션은 zone 내에서 다른 네트워크들 사이" -"를 오가는 forward traffic 에 대한 정책을 뜻합니다. Covered networks " -"에서는 zone 의 영향을 받을 네트워크들을 지정할 수 있습니다." +"이 섹션은 %q 의 공통 속성을 설정할 수 있습니다. input 과 " +"output 옵션은 이 Zone 으로 전달되어 들오거나 나가는 트래픽에 대한 기" +"본 정책을 뜻합니다. forward 옵션은 Zone 내에서 다른 네트워크들 사이" +"를 오가는 포워드 트래픽에 대한 정책을 뜻합니다. Covered networks 에" +"서는 Zone 의 영향을 받을 네트워크들을 지정할 수 있습니다." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "목요일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "UTC 기준시" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Traffic Rule" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Traffic rule 은 서로 다른 zone 사이를 오가는 패킷들에 대한 정책을 정의합니" "다. 예를 들어 특정 host 들 사이의 트래픽을 차단하거나 공유기의 WAN port 를 " "open 할때 사용됩니다." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "화요일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "수요일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "주일" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zone 내역" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "무제한" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" +msgstr "명시되지 않음" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s ,%s" - -#~ msgid "Destination IP address" -#~ msgstr "Destination IP 주소" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "Add and edit..." -#~ msgstr "추가 후 수정..." - -#~ msgid "External zone" -#~ msgstr "외부 zone" - -#~ msgid "New SNAT rule" -#~ msgstr "새로운 SNAT rule" - -#~ msgid "New forward rule" -#~ msgstr "새로운 forward rule" - -#~ msgid "New input rule" -#~ msgstr "새로운 input rule" - -#~ msgid "New port forward" -#~ msgstr "새로운 port forward" - -#~ msgid "New source NAT" -#~ msgstr "새로운 source NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "Source NAT 기능은 masquerading 의 한 형태로써 outgoing 트래픽이 사용할 " -#~ "source IP 를 세밀하게 제어할 수 있습니다. 예를 들어 다수의 WAN 주소들을 " -#~ "내부 subnet 에 매핑(mapping) 할 경우 사용됩니다." - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "시작 시간 (hh:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "종료 시간 (hh:mm:ss)" - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "이 메뉴에서는 port forwarding 의 고급 설정 정보를 변경할 수 있습니다. 대부" -#~ "분의 경우 이 설정을 수정할 일이 없습니다." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "이 메뉴에서는 traffic rule 항목의 고급 설정, 예를 들어 source host 와 " -#~ "destination host 매칭, 을 변경할 수 있습니다." diff --git a/luci-app-firewall/po/lt/firewall.po b/luci-app-firewall/po/lt/firewall.po new file mode 100644 index 000000000..aa01f0d77 --- /dev/null +++ b/luci-app-firewall/po/lt/firewall.po @@ -0,0 +1,1625 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-10-20 19:09+0000\n" +"Last-Translator: Džiugas Januševičius \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (" +"n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.8-rc\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Persiųsta:Gaunama}:Išsiunčiama} %{ipv6?%{ipv4?IPv4 " +"and IPv6:IPv6}:IPv4}%{proto?, protokolas " +"%{proto#%{next?, }%{item.types?%{item." +"name}„ICMP“ su tipais %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- Pridėti IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- Pridėti „MAC“ --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Priimti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Neleisti išteklio perrašymo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Persiųsti į %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? prievadas %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Mesti/Šalinti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Priskirti „DSCP“ classification " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Priskirti „conntrack“ helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} užkardos žymė " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automatiškai perrašyti IP šaltinį" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Nesekti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Atmesti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statistiškai perrašyti į šaltinį %{snat_ip?" +"IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Turi būti nurodytas perrašymo IP!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "PRIIMTI – išjungti adreso perrašymą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Veiksmas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Papildomi neapdoroti „iptables“ argumentai, skirti klasifikuoti " +"zonos paskirties srautą, pvz. „-p tcp --dport 443“, kad " +"atitiktų tik išsiunčiamą „HTTPS“ srautą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Papildomi neapdoroti „iptables“ argumentai zonos šaltinio srautui " +"klasifikuoti, pvz. „-p tcp --sport 443“, kad atitiktų tik " +"atvykstantį „HTTPS“ srautą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adresų „šeima“, vidinis IP adresas turi atitikti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adresų „šeima“, šaltinio adresas, paskirties adresas, perrašymo IP adresas " +"turi atitikti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Pažangūs nustatymai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Leisti „techniškai neveikiančiai“ veiklai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Leisti perleidimą iš išteklio zonų:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Leisti perleidimą į paskirties zonas:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Bet koks" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Bet kokią dieną" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Taikyti duotosios vertės ir esamos žymos reikšmės bitinį „XOR“ sukurtiems " +"ryšiams. Formatas yra „value[/mask]“. Jei nurodyta tinklavimo „kaukė“ – " +"adresų segregatorius, tada tinklavimo „kaukėje“ – adresų segregatoriuje " +"nustatyti bitai yra – nuliniai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Taikyti nurodyta „DSCP“ klasę arba reikšmę užmegztiems ryšiams." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Priskirti nurodytą ryšio sekimo pagelbiklį atitinkančiam srautui." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatinis pagelbiklio paskyrimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatiškai priskirti „conntrack“ pagelbiklius pagal srauto protokolą ir " +"prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Komentuoti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "„Conntrack“ nustatymai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "„Conntrack“ pagelbikliai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Turinys buvo išsaugotas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Tęsti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Rodikliai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Įtraukti/Apgaubti įrenginiai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Įtraukti/Apgaubti tinklai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Įtraukti/Apgaubti potinkliai" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Pasirinktinės taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Pasirinktinės taisyklės leidžia vykdyti savavališkas „iptables“ komandas, " +"kurių užkardo pagrindų sistema kitaip neapima. Komandos vykdomos po " +"kiekvieno užkardo paleidimo iš naujo, iškart po to, kai įkeliamas " +"numatytasis taisyklių rinkinys." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "„DSCP“ klasifikacija" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "„DSCP“ žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "„DSCP“ žymė reikalinga" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Paskirties/Kelionės tikslo adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Paskirties/Kelionės tikslo prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Paskirties/Kelionės tikslo zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Įrenginio vardas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Neįdiegkite papildomų taisyklių, kad atmestumėte persiųstą srautą, kai " +"„conntrack“ būsena „netinkama“. To gali prireikti nustatant " +"sudėtingus asimetrinius maršrutus." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Mesti/Šalinti netinkamus paketus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Įjungti/Įgalinti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Įjungti/Įgalinti „NAT Loopback“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Įjungti/Įgalinti „SYN-flood“ apsauga" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Įjungti/Įgalinti žurnalinima šitoje zonoje" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Įjungti tinklo adresus ir prievado vertimą IPv4 („NAT4“ arba „NAPT4“) " +"išsiunčiamam srautui šitoje zonoje. Tai tipiškai įjungiama/įgalinima " +"„wan“ zonoje." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Įjungti tinklo adresus ir prievado vertimą IPv6 („NAT6“ arba „NAPT6“) " +"išsiunčiamam srautui šitoje zonoje." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Įjungta/Įgalinta (-s/-i)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Įgalina rinkinio paketų ir baitų skaičiaus sekimą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Tikimasi: „%s“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Aiškiai pasirenka leistinus ryšio sekimo pagelbiklius zonos srautui" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Išorinis IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Išorinis prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Papildomi argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Papildomi paskirties/kelionės tikslo argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Papildomi „iptables“ argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Papildomi išteklio argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Šeima" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Užkarda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Užkarda - Atskiros/Pasirinktinės taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Užkarda – IP rinkiniai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Užkarda - „NAT“ taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Užkarda – Prievadų persiuntimas/-ai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Užkarda - Srauto taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Užkarda - Zonų nustatymai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Užkardos konfigūracijos migracija" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Persiųsti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Persiųsta %{ipv6?%{ipv4?IPv4 ir IPv6:IPv6}:" +"IPv4}%{proto?, protokolas %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +"val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Penktadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Iš %{src}%{src_device?, sąsajos ir/ar sietuvo %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, prievadas %{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Iš %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, prievadas " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, „MAC“ " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Iš %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Bendri nustatymai" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" +"Duoti prieigą prie užkardos konfigūravimo „pkg – firewall configuration“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Aparatinės įrangos srauto iškrovimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (diapazonas)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP rinkiniai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP(dgs.)/Tinklai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP(dgs.)/Tinklai/„MACs“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4 – Interneto protokolo versija 4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 ir IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Tik IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6 – Interneto protokolo versija 6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 privataus IP į viešojo IP konvertavimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Tik IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Atvykstantis įrenginys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Įtraukti failą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Gaunamas %{ipv6?%{ipv4?IPv4 ir IPv6:IPv6}:" +"IPv4}%{proto?, protokolas %{proto#%{next?, }%{item.types?%{item.name}„ICMP“ su tipais %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Pradinis maišos dydis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Įvestis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Vidinis IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Vidinis prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Vidinė zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Tarpzoninis persiuntimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Netinkamą „DSCP“ žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Netinkama ribinė reikšmė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Neteisingas rinkinio pavadinimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Apriboti pliūpsnius" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Riboti žurnalo pranešimus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Apriboti atitikimą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Apriboti atitikimą į „%{limit.num}“ paketus/-ai per „%{limit." +"unit}%{limit.burst? burst %{limit.burst}}“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Įjungtas ribotas privataus IP į viešojo IP konvertavimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Apriboja srauto atitikimą iki nurodytos spartos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP ciklo grįžimo šaltinis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"„MASQUERADE“ – Automatiškai perrašyti į išsiunčiamos sąsajos IP (privatus IP " +"į viešąjį IP)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "„MSS“ prispaudimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Privataus IP į viešojo IP konvertavimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Atitikti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Atitikti „DSCP“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Atitikti „ICMP“ tipą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Atitikti įrenginį" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Atitikti peradresuotą srautą, nukreiptą nurodytu IP adresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Atitikti persiųstą srautą, nukreiptą į nurodytą paskirties prievadą arba " +"prievado diapazoną." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Atitikti persiųstą srautą iš šio IP arba diapazono." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Atitikti persiųstą srautą, kilusį iš nurodyto šaltinio prievado arba " +"prievadų diapazono." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Atitikti pagelbiklį" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Atitikti įeinantį srautą, nukreiptą į nurodytą paskirties prievadą arba " +"prievadų diapazoną ant šito skleidėjo/vedėjo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Atitiktį žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Atitikti srautą naudodami nurodytą ryšio sekimo pagelbiklį." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Atitinka savitą užkardos žymę arba daugybę skirtingų žymių." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Atitinka persiųstą srautą naudojant nurodytą išsiunčiamo tinklo įrenginį." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Atitinka srautą su nurodytu „DSCP“ žymėjimu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maksimalus įrašų skaičius" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maksimalus ilgis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maksimalus pradinis paketų skaičius: šis skaičius įkraunamas vienu kaskart, " +"kai nepasiekiama aukščiau nurodyta riba, iki šio skaičiaus." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Pirmadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Mėnesis/Mėnuo, dienos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "„NAT“ taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"„NAT“ taisyklės leidžia tiksliai valdyti šaltinio IP, kurią galima naudoti " +"išsiunčiamam arba persiunčiamam srautui." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Vardas/Pavadinimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Tinklavimo „net-kaukė“ – 32-bitų adresas, IP užmaskãvimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nepilnai suderinamas su „QoS“/„SQM“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Atitikti tik įeinantį srautą, nukreiptą nurodytu IP adresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Atitikti tik įeinantį srautą iš šių „MAC“ adresų." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Atitikti tik įeinantį srautą iš šio IP arba diapazono." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Atitikti tik gaunamą srautą, kilusį iš nurodyto šaltinio prievado arba " +"prievadų diapazono kliento skleidėjo/vedėjo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Išsiunčiamasis įrenginys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Išsiunčiamoji zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Išvestis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Paketo lauko atitikimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Paketų laukai, kuriuos reikia suderinti. „
Syntax: " +"direction_datatype“. Pvz.: „src_port, dest_net.
Directions: src, dst“. Duomenų tipai: „ip, port, mac, " +"net, set.
“ Krypties priešdėliai yra pasirenkami.„
“ " +"*Pastaba: duomenų tipas „set“ yra nepalaikomas per „fw4“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Perduoda papildomus argumentus į „iptables“. Naudokite atsargiai!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Perduodant neapdorotus „iptables“ argumentus į šaltinio ir paskirties srauto " +"klasifikavimo taisyklės leidžia suderinti paketus pagal kitus kriterijus nei " +"sąsajos ar potinklius. Šias parinktis reikia naudoti labai atsargiai, nes " +"dėl netinkamų reikšmių, užkardos taisyklių rinkinys gali būti sugadintas; " +"visiškai atskleisti visas tarnybas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"Kelias į „CIDR“ (dgs.) failą , potinklius, skleidėjų/vedėjų IP (dgs.) ir kt." +"
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Prievadų persiuntimai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Prievadų persiuntimas leidžia išoriniams kompiuteriams internete prisijungti " +"prie Jūsų savito kompiuterio ar paslaugų veikiančių Jūsų privačiame " +"vietiniame („LAN“) tinkle." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Prievadų diapazono pasiekiamumas/numatomas apribojimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokolas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Peradresuoti suderintą gaunamą srautą į nurodytą vidinio skleidėjo/vedėjo " +"prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" +"Peradresuoti atitinkantį gaunamą srautą į nurodytą vidinį skleidėją/vedėją" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Žr. Išorinis rinkinys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Atspindžio zonos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Reikalingas techninės įrangos „NAT“ palaikymas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" +"Apriboti privataus IP į viešojo IP konvertavimą nurodytais paskirties " +"potinkliais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" +"Apriboti privataus IP į viešojo IP konvertavimą nurodytais šaltinio " +"potinkliais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Apriboti į adreso „šeimą“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Perrašyti IP adresą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Perrašyti suderintą srautą į nurodytą šaltinio IP adresą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Perrašyti suderintą srautą į nurodytą šaltinio prievadą arba prievado " +"diapazoną." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Perrašyti prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Kelvados/„NAT“ iškrovos perkėlimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "„SNAT“ – perrašyti į savito šaltinio IP arba prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Šeštadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Nustatyti žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Nustatyti nurodytą žymos reikšmę užmegztiems ryšiams. Formatas yra – " +"reikšmė[/mask] („value[/mask]“). Jei nurodyta tinklavimo „kaukė“ – adresų " +"segregatorius, keičiami tik tie tinklavimo „kaukėje“ – adresų segregatoriuje " +"nustatyti bitai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Taikomosios įrangos srauto iškrovos perkėlimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "IP adreso šaltinis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Šaltinio „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Šaltinio adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Šaltinio prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Šaltinio zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Nurodoma, ar susieti šią srauto taisyklę su savitu atvykstančiu ar " +"išsiunčiamu tinklo įrenginiu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "Nurodo, ar atspindėtam srautui naudoti išorinį ar vidinį IP adresą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Pradžios data (Metai-Mėnuo-Diena/pvz:1990-03-11)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Pradėti laiką (val:min:sek)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Pabaigos data (Metai-Mėnuo-Diena/pvz:1993-08-31)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stabdyti laiką (val:min:sek)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Talpos metodas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Sekmadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Dabartinė užkardos konfigūracija turi būti pakeista, jeigu norite, kad " +"„LuCI“ veiktų teisingai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "Užkarda sukuria zonas tinklo sąsajose, kad valdytų tinklo srautą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Toliau pateiktos parinktys valdo persiuntimo politiką tarp šios zonos („%s“) " +"ir kitų zonų. Paskirties zonos apima persiųstą srautą iš " +"„%q“. Šaltinio zonos atitinka persiųstą srautą iš kitų " +"zonų, nukreipta į „%q“. Persiuntimo taisyklė yra " +"vienakryptė, pvz. persiuntimas iš „LAN“ į „WAN“ taip pat " +"nereiškia leidimo persiųsti iš „WAN“ į „LAN“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Šiame skyriuje apibrėžiamos bendrosios %q savybės. Įvesties ir " +"išvesties parinktys nustato numatytąsias srauto, patenkančio į šią " +"zoną ir išeinančio iš jos politiką, o „persiųsti“ parinktis aprašo " +"politikos persiuntimo srautą tarp skirtingų tinklų zonos viduje. " +"Padengti tinklai nurodo, kurie galimi tinklai yra šios zonos nariai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Ketvirtadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Laiko ribojimai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Laikas pagal GMT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Laiko ribojimai yra įgalinti šiai taisyklei" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Pasibaigė užklausos laikas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Į %{dest}%{dest_device?, sąsają ir/ar sietuvą %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, prievadas %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Į %{dest}%{dest_device?, per sąsają ir/ar sietuvą %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, prievadas %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Į %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, prievadas %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Sekimo pagalbininkas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Srauto taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Srauto taisyklės apibrėžia paketų, keliaujančių tarp skirtingų zonų, " +"politiką (pavyzdžiui, atmesti srautą tarp tam tikrų skleidėjų/vedėjų arba " +"atidaryti maršrutizatoriaus „WAN“ prievadus)." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Antradienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Nepavyko išsaugoti turinį: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Vienetas: sekundės. Numatytas 0, reiškią, kad įvestis yra " +"pridėtas visam laikui į rinkinį.
Maksimalus: 2147483 sekundės." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Nežinomas arba neįdiegtas „conntrack“ pagelbiklis „%s“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Nepavadintas „NAT“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Nepavadintas persiuntimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Nepavadinta taisyklė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Nepavadintas rinkinys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Nepavadinta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Neatpažintas protokolas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Paspaudus „Tęsti“, „peradresuoti“ sekcijos su tiksline „SNAT“ bus " +"konvertuojamos į „nat“ skiltis, o užkarda bus paleista iš naujo, kad būtų " +"pritaikyta atnaujinta konfigūracija." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Naudoti išorinį IP adresą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Naudoti vidinį IP adresą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Naudoti „ipset“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Naudoti šią parinktį, jei norite klasifikuoti zonos srautą pagal " +"neapdorotus, ne„uci“ valdomus tinklo įrenginius." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Naudoti šią parinktį, norėdami klasifikuoti zonos srautą pagal šaltinį arba " +"paskirties potinklį, vietoj tinklus ar įrenginius." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Reikalinga galiojanti užkardos žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Trečiadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Savaitės dienos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "„XOR“ užkardos žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "„XOR“ žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Jūsų įrenginyje neveikia „firewall4“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Jūsų įrenginyje veikia „firewall4“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Perleidimai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zonos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonos, iš kurių turi būti kuriamos atspindžio taisyklės. Jei nenustatyta, " +"bus naudojama tik paskirties zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "priimti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "bet koks" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "bet kokia zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "bet koks/visi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "patvirtinti užkardos žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "Priskirti „conntract helper“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatinis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "„bitmap“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "„bitmap“ yra tik IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "diena" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "„dest_ip“: Paskirties IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Paskirties „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "„dest_net“: Paskirties „(sub)net“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "„dest_port“: Paskirties Prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "„dest_set“: Paskirties „ipset“*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "neperrašyti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nesekti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "mesti/šalinti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"„Firewall4“ palaiko įvestiẽs arba išvestiẽs kreipinių ir IP rinkinių kūrimą, " +"kad būtų supaprastintas didelių adresų sąrašų suderinimas be poreikio " +"kuriant vieną taisyklę kiekvienam elementui, kad jis atitiktų. „IPsets“ " +"prievadų diapazonai nepalaikomi „firewall4“.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "iš•prievado-į•prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "maiša" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "valanda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "„ip“: IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "„ip[/cidr]
“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"„ip[/cidr]“
Naudoti su atitikties duomenų tipais: „*_ip“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "sąrašas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "„mac“: „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "„macaddr|ip[/cidr]“
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minutė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "„net“: (po)tinklis/tinklas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "„port“: Prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "atmesti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekundė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "rinkinys: „ipset*“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "„src_Set“: Šaltinio „ipset*“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "„src_ip“: Šaltinio IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "„src_mac“: Šaltinio „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "„src_net“: Šaltinio (po)tinklis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "„src_port“: Šaltinio prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "šis įrenginys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "ši nauja zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "neribotas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "nenustatyta/-s/-i" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "iki 65536 įrašų." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "tinkamą užkardos žymę" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "" +#~ "Taikomosios įrangos pagrįsta kelvada ir (arba) „NAT“ iškrovos perkėlimas" diff --git a/luci-app-firewall/po/mr/firewall.po b/luci-app-firewall/po/mr/firewall.po index ae3c81857..1780bca1b 100644 --- a/luci-app-firewall/po/mr/firewall.po +++ b/luci-app-firewall/po/mr/firewall.po @@ -14,359 +14,412 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.11-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "प्रगत सेटिंग्ज" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "गंतव्य पोर्ट" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "सक्षम करा" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "सामान्य सेटिंग्ज" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 आणि IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "केवळ IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "केवळ IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "चिन्ह जुळवा" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "नाव" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -657,202 +809,194 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "प्रोटोकॉल" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "स्रोत पोर्ट" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -862,7 +1006,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -871,22 +1015,30 @@ msgid "" "networks specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" -#~ msgid "IPv4" -#~ msgstr "IPv4" - #~ msgid "MAC" #~ msgstr "MAC" diff --git a/luci-app-firewall/po/ms/firewall.po b/luci-app-firewall/po/ms/firewall.po index dfc6fad65..97eaf50ee 100644 --- a/luci-app-firewall/po/ms/firewall.po +++ b/luci-app-firewall/po/ms/firewall.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-01-22 09:21+0000\n" +"Last-Translator: Abdul Muizz Bin Abdul Jalil \n" "Language-Team: Malay \n" "Language: ms\n" @@ -10,357 +10,414 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.4-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Tindakan" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Tetapan Lanjutan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Ulasan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "" +msgstr "Alamat destinasi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "" +msgstr "Pemboleh" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Dibolehkan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" -msgstr "" +msgstr "Tembok api" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -651,172 +807,194 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 -msgid "Protocol" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -826,7 +1004,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -835,22 +1013,30 @@ msgid "" "networks specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "Tidak terhad" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" +msgstr "Tidak ternyata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "MAC" -#~ msgstr "MAC" diff --git a/luci-app-firewall/po/nb_NO/firewall.po b/luci-app-firewall/po/nb_NO/firewall.po index cc73c222e..ba46a4859 100644 --- a/luci-app-firewall/po/nb_NO/firewall.po +++ b/luci-app-firewall/po/nb_NO/firewall.po @@ -1,215 +1,242 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-01-03 18:37+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" -"Language: no\n" +"Language: nb_NO\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.4-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Handling" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Avanserte Innstillinger" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Avanserte innstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Tillat videresending fra kilde soner:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Tillat videresending til destinasjon soner:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Enhver" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "" +msgstr "Innholdet har blitt lagret." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" +msgstr "Fortsett" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Gjeldene nettverk" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Egendefinerte Regler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -219,149 +246,179 @@ msgstr "" "som ikke dekkes av brannmurens standardoppsett. Kommandoene utføres etter " "hver omstart av brannmuren, rett etter at standard regelsett er lastet." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Destinasjon adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "Destinasjon port" +msgstr "Målport" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" -msgstr "Destinasjon sone" +msgstr "Målsone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Enhetsnavn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Forkast ugyldige pakker" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "Aktiver" +msgstr "Skru på" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Aktiver NAT Tilbakekobling" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Aktiver SYN-flood beskyttelse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Aktiver logging av denne sonen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Påskrudd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "Forventer: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Ekstern IP adressse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Ekstern port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Ekstra argumenter" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Brannmur" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Brannmur - Egendefinerte Regler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Brannmur - Port Videresending" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Brannmur - Trafikk Regler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Brannmur - Sone Innstillinger" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 -msgid "Forward" -msgstr "Videresend" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 -msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Frem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Generelle Innstillinger" +msgstr "Generelle innstillinger" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 og IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Kun IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Kun IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Inndata" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Intern IP adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Intern port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Intern sone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Begrens logging" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSS Kontroll (Clamping)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Masquerading" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Match" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Match ICMP type" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -552,74 +674,96 @@ msgstr "" "Match innkommende trafikk rettet mot den oppgitte destinasjonsport eller " "portområdet på denne verten" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Navn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Nettmaske" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Match kun innkommende trafikk rettet mot den oppgitt IP adresse." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Match kun innkommende trafikk fra disse MAC adresser." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Match kun innkommende trafikk fra denne IP eller IP område." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -627,27 +771,39 @@ msgstr "" "Match kun innkommende trafikk som kommer fra den oppgitte kildeport eller " "fra portområdet til klienten" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Utdata" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "Sender flere argumenter til iptables. Bruk med forsiktighet!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -656,12 +812,16 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Port Videresendinger" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -669,156 +829,174 @@ msgstr "" "Port videresending tillater at eksterne datamaskiner på Internett kan koble " "seg til en bestemt maskin eller tjeneste innenfor det private LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Viderekoble matchet innkommende trafikk til den oppgitte porten på intern " "vert" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Viderekoble matchet innkommende trafikk til den angitte interne vert" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Begrens Masquerading til oppgitt destinasjons subnett" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Begrens Masqeuerading til oppgitt kilde subnett" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Begrens til adresse familie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Kilde IP adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Kilde MAC adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Kilde adresse" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Kilde port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Kilde sone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -826,8 +1004,8 @@ msgstr "" "Brannmuren skaper soner over nettverkets grensesnitt for å styre " "nettverkstrafikken." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -843,7 +1021,7 @@ msgstr "" "ved videresending er enveis, d.v.s at videresending fra LAN til WAN " "ikke automatisk også tillater videresending fra WAN til LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 #, fuzzy msgid "" "This section defines common properties of %q. The input and " @@ -859,22 +1037,30 @@ msgstr "" "spesifiserer hvilken av de tilgjengelige nettverk som er medlem av denne " "sone." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tidsavbrudd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Trafikk Regler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Trafikk regler definerer regler for sending av pakker mellom ulike soner, " "for eksempel for å avvise trafikk mellom visse verter eller for å åpne WAN " "porter på ruteren." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Sone = Videresendinger" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Soner" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "godta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "enhver" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "enhver sone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "ikke track" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "forkast" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "avslå" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 -msgid "valid firewall mark" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#~ msgid "%s in %s" -#~ msgstr "%s i %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s med %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s i %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d pakker per %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d pakker per %s, burst %dpakker." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s og begrens til %s" - -#~ msgid "Destination IP address" -#~ msgstr "Destinasjon IP adresse" - -#~ msgid "Do not rewrite" -#~ msgstr "Ikke omskriv" - -#~ msgid "Forward to" -#~ msgstr "Videresend til" - -#~ msgid "From %s in %s" -#~ msgstr "Fra %s i %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Fra %s i %s med kilde %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Fra %s i %s med kilde %s og %s" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Til %s på %s på denne enheten" - -#~ msgid "To %s in %s" -#~ msgstr "Til %s i %s" - -#~ msgid "To %s on this device" -#~ msgstr "Til %s på denne enheten" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Til %s, %s i %s" - -#~ msgid "Via %s" -#~ msgstr "Via %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Via %s på %s" - -#~ msgid "any host" -#~ msgstr "enhver vert" - -#~ msgid "any router IP" -#~ msgstr "enhver ruter IP" - -#~ msgid "Force connection tracking" -#~ msgstr "" -#~ "Bruk forbindelse sporing" - -#~ msgid "Add" -#~ msgstr "Legg til" - -#~ msgid "Add and edit..." -#~ msgstr "Legg til og redigere..." - -#~ msgid "External zone" -#~ msgstr "Ekstern sone" - -#~ msgid "New SNAT rule" -#~ msgstr "Ny SNAT regel" - -#~ msgid "New forward rule" -#~ msgstr "Ny videresending regel" - -#~ msgid "New input rule" -#~ msgstr "Ny inndata regel" - -#~ msgid "New port forward" -#~ msgstr "Ny port videresending" - -#~ msgid "New source NAT" -#~ msgstr "Ny kilde NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Åpne porter på ruteren" - -#~ msgid "Other..." -#~ msgstr "Andre..." - -#~ msgid "To source IP" -#~ msgstr "Til kilde IP" - -#~ msgid "To source port" -#~ msgstr "Til kilde port" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(oppføring uten navn)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(regel uten navn)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(SNAT uten navn)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Sone til Sone Videresending" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Match videresendt trafikk til den oppgitte destinasjonsport eller " -#~ "portområdet." - -#~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "" -#~ "Match innkommende trafikk som kommer fra den oppgitte kildeport eller " -#~ "portområdet på klienten." - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Omskriv matchet trafikk til den oppgitte adressen." - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Omskriv matchet trafikk til den oppgitte kildeport. Kan stå tom for kun " -#~ "omskriving av IP adressen." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Omskriv til kilde %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Omskriv til kilde %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "SNAT IP adresse" - -#~ msgid "SNAT port" -#~ msgstr "SNAT port" - -#~ msgid "Source NAT" -#~ msgstr "Kilde NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "Kilde NAT er en spesifikk form for masquerading som tillater finkornet " -#~ "kontroll over kilde IP adressen som brukes for utgående trafikk, for " -#~ "eksempel for å mappe flere WAN adresser til interne subnett." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Denne siden lar deg endre avanserte egenskaper til port videresending " -#~ "oppføringer. I de fleste tilfeller er det ikke nødvendig å endre disse " -#~ "innstillingene." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Denne siden lar deg endre de avanserte egenskapene til trafikken regel " -#~ "oppføringer, som for eksempel matchet kilde og destinasjons vert." - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Du kan spesifisere flere ved å velge \"-- egendefinert --\" og deretter " -#~ "skrive flere protokoller atskilt med mellomrom." - -#~ msgid "Zone %q" -#~ msgstr "Sone %q" +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/nl/firewall.po b/luci-app-firewall/po/nl/firewall.po new file mode 100644 index 000000000..55f27f290 --- /dev/null +++ b/luci-app-firewall/po/nl/firewall.po @@ -0,0 +1,1629 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-04-18 14:03+0000\n" +"Last-Translator: Stephan \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Inkomend}:Uitgaand} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP met types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- IP toevoegen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- MAC toevoegen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accepteer %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Voorkom overschrijven van bron" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Uitgang %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Toewijzen DSCP classificatie " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Geassocieerde tracking helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} Firewall markering " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automatisch herschrijven bron IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Niet traceren %{src?%{dest?forward:" +"input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Afwijzen %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statisch herschrijven naar bron %{snat_ip?" +"IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Een herschrijf IP moet gespecificeerd worden!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPTEREN - Herschrijven van adres uitschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Actie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Extra ruwe iptables argumenten om zonebestemmingsverkeer te " +"classificeren, bv. -p tcp --dport 443 om alleen overeen te " +"komen met uitgaand HTTPS-verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Extra ruwe iptables argumenten om zonebronverkeer te classificeren, " +"bv. -p tcp --sport 443 om alleen inkomend HTTPS-verkeer te " +"matchen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adres familie, het interne IP-adres moet overeenkomen met" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adres familie, bronadres, bestemmingsadres, herschreven IP-adres moeten " +"overeenkomen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Geavanceerde instellingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Laat \"ongeldig\" verkeer toe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Doorsturen vanuit bronzones toestaan:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Doorsturen naar bestemmingszones toestaan:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Elke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Elke dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Past een bitwise XOR toe van de gegeven waarde en de bestaande markeerwaarde " +"op gevestigde verbindingen. Formaat is waarde[/masker]. Als een masker is " +"opgegeven, worden de bits in het masker op nul gezet." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"Past de opgegeven DSCP-klasse of -waarde toe op tot stand gebrachte " +"verbindingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Wijst de gespecificeerde helper voor het volgen van verbindingen toe aan " +"gematcht verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatische helper opdracht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatisch conntrack helpers toewijzen op basis van verkeersprotocol en " +"poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Opmerking" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack Instellingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack helpers" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "De inhoud is opgeslagen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Doorgaan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Tellers" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Gedekte apparaten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Gedekte netwerken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Gedekte subnetten" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Aangepaste regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Aangepaste regels laten u toe om willekeurige iptables-commando's uit te " +"voeren die anders niet onder het firewall raamwerk vallen. De commando's " +"worden uitgevoerd na elke herstart van de firewall, direct nadat de " +"standaardregelset is geladen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP classificatie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP markering vereist" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Bestemmingsadres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Bestemmingspoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Bestemmingszone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Naam apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Installeer geen extra regels om doorgestuurd verkeer met conntrackstatus " +"ongeldig te weigeren. Dit kan nodig zijn voor complexe " +"asymmetrische route-instellingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Verwijder ongeldige pakketten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "NAT Loopback inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-flood bescherming inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Logging op deze zone inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Netwerkadres- en poortvertaling IPv4 (NAT4 of NAPT4) inschakelen voor " +"uitgaand verkeer in deze zone. Dit is meestal ingeschakeld in de zone " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Netwerkadres- en poortvertaling IPv6 (NAT6 of NAPT6) inschakelen voor " +"uitgaand verkeer op deze zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Ingeschakeld" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Schakelt het telling bijhouden van pakketten en bytes voor de set in." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Verwacht: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Kiest expliciet toegestane connectie tracking helpers voor zoneverkeer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Extern IP-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Externe poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Extra argumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Extra bestemmingsargumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Extra iptables argumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Extra bron argumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Aangepaste regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - IP sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - NAT-regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Poort doorsturen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Verkeersregels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Zone-instellingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migratie van firewallconfiguratie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Forwarded %{ipv6?%{ipv4?IPv4 en IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Vrijdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Van %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, poort " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Van %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, poort " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Van %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, poort %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Algemene instellingen" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Toegang verlenen tot firewallconfiguratie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Hardware stroom ontlasten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (bereik)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP's/netwerken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP's/Netwerken/MAC's" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 en IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Alleen IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6-maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Alleen IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Inkomend apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Inclusief bestand" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Inkomend %{ipv6?%{ipv4?IPv4 en IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"met types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Initiële hashgrootte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Invoer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Intern IP-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Interne poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Interne zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Ongeldige DSCP-markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Ongeldige grenswaarde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Beperk burst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Logboekberichten beperken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Beperk het matchen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Beperk matching tot %{limit.num} pakketten per %{limit.unit}" +"%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Beperkte maskering ingeschakeld" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Beperkt verkeer dat overeenkomt met de opgegeven snelheid." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Loopback-bron-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Automatisch herschrijven naar uitgaande interface IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS klemmen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Gemaskerd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "ICMP-type overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Apparaat overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Match doorgestuurd verkeer gericht op het opgegeven IP-adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Match doorgestuurd verkeer dat is gericht op de opgegeven bestemmingspoort " +"of poortbereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Match doorgestuurd verkeer van dit IP-adres of bereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Match doorgestuurd verkeer afkomstig van de opgegeven bronpoort of " +"poortbereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Match helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Binnenkomend verkeer afstemmen dat is gericht op de opgegeven " +"bestemmingspoort of het opgegeven poortbereik op deze host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Markering overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Match verkeer met behulp van de opgegeven helper voor het bijhouden van " +"verbindingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Komt overeen met een specifieke firewallmarkering of een reeks verschillende " +"markeringen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Komt overeen met doorgestuurd verkeer met behulp van het opgegeven uitgaande " +"netwerkapparaat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Komt overeen met verkeer met de opgegeven DSCP-markering." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Max inzendingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Max lengte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maximum aanvankelijk aantal te matchen pakketten: dit aantal wordt elke keer " +"dat de hierboven gespecificeerde limiet niet wordt bereikt met één " +"aangevuld, tot dit aantal." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Maandag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Maand Dagen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-regels bieden een gedetailleerde controle over het bron-IP-adres dat " +"moet worden gebruikt voor uitgaand of doorgestuurd verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Naam" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmasker" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Niet volledig compatibel met QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Pas alleen binnenkomend verkeer toe dat naar het opgegeven IP-adres wordt " +"geleid." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Alleen binnenkomend verkeer van deze MAC's matchen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Match alleen binnenkomend verkeer van dit IP of bereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Pas alleen binnenkomend verkeer toe dat afkomstig is van de opgegeven " +"bronpoort of poortbereik op de clienthost" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Uitgaand apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Uitgaande zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Uitgang" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Pakket veld matchen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Pakketvelden waarop moet worden afgestemd.
Syntax: " +"direction_datatype. bijv.: src_port, dest_net.
Richtingen: src, dst. Datatypes: ip, poort, mac, net, " +"set.
Richtingvoorvoegsels zijn optioneel.
*Noot: datatype " +"set wordt niet ondersteund in fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Geeft aanvullende argumenten door aan iptables. Zorgvuldig gebruiken!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Door onbewerkte iptables-argumenten door te geven aan classificatieregels " +"voor bron- en bestemmingsverkeer, kunnen pakketten worden vergeleken op " +"basis van andere criteria dan interfaces of subnetten. Deze opties moeten " +"uiterst voorzichtig worden gebruikt, omdat ongeldige waarden de regelset van " +"de firewall kunnen overtreden, waardoor alle services volledig worden " +"blootgesteld." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Pad naar bestand van CIDR's, subnetten, host-IP's, enz.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Poort forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Met poort forwarding kunnen externe computers op internet verbinding maken " +"met een specifieke computer of service binnen het privé-LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Poort bereik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Leid overeenkomend binnenkomend verkeer om naar de opgegeven poort op de " +"interne host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" +"Leid overeenkomend binnenkomend verkeer om naar de opgegeven interne host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Raadpleeg Externe set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Vereist hardware NAT-ondersteuning." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Beperk Masquerading tot bepaalde bestemmingssubnetten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Beperk Masquerading tot bepaalde bronsubnetten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Beperken tot adres familie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Herschrijf het IP-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Herschrijf overeenkomend verkeer naar het opgegeven bron-IP-adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Herschrijf overeenkomend verkeer naar de opgegeven bronpoort of poortbereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Herschrijf poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Routering/NAT-offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - herschrijven naar specifieke bron-IP of poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Zaterdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Markering instellen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Stel de gegeven markeringswaarde in op bestaande verbindingen. Formaat is " +"waarde[/mask]. Als een masker is opgegeven, worden alleen de bits die in het " +"masker zijn ingesteld, gewijzigd." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Software flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Bron IP adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Bron MAC-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Bron adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Bronpoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Bronzone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Geeft aan of deze verkeersregel moet worden gekoppeld aan een specifiek " +"inkomend of uitgaand netwerkapparaat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Specificeert of het externe of het interne IP-adres moet worden gebruikt " +"voor gereflecteerd verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdatum (jjjj-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Starttijd (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Stopdatum (jjjj-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stoptijd (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Opslagmethode" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Zondag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"De bestaande firewallconfiguratie moet worden gewijzigd om LuCI goed te " +"laten functioneren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"De firewall creëert zones over uw netwerkinterfaces om de " +"netwerkverkeersstroom te regelen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"De onderstaande opties regelen het doorstuurbeleid tussen deze zone (%s) en " +"andere zones. Bestemmingszones dekken doorgestuurd verkeer " +"afkomstig van %q. Bronzones komen overeen met " +"doorgestuurd verkeer van andere zones gericht op %q. De " +"doorstuurregel is unidirectioneel, b.v. een forward van lan naar " +"wan impliceert niet een toestemming om ook van wan naar lan door te " +"sturen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Deze sectie definieert gemeenschappelijke eigenschappen van %q. De opties " +"invoer en uitvoer stellen het standaardbeleid in voor " +"verkeer dat deze zone binnenkomt en verlaat, terwijl de optie forward het beleid beschrijft voor doorgestuurd verkeer tussen verschillende " +"netwerken binnen de zone . Overdekte netwerken specificeert welke " +"beschikbare netwerken lid zijn van deze zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Donderdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Tijdsbeperkingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Tijd in UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Tijdsbeperkingen zijn ingeschakeld voor deze regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Time-out" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Naar %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, poort " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Naar %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, poort %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Naar %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, poort %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Tracking helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Verkeersregels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Verkeersregels definiëren beleid voor pakketten die tussen verschillende " +"zones reizen, bijvoorbeeld om verkeer tussen bepaalde hosts te weigeren of " +"om WAN-poorten op de router te openen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Dinsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Kan inhoud niet opslaan: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Eenheid: seconden. Standaard 0 betekent dat het item permanent " +"aan de set wordt toegevoegd.
Max: 2147483 seconden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Onbekende of niet geïnstalleerde conntrack helper \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Naamloze NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Naamloze forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Naamloze regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Naamloze set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Naamloze zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Niet herkend protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Als u op \"Doorgaan\" klikt, worden \"omleidings\"-secties met als doel " +"\"SNAT\" geconverteerd naar \"nat\"-secties en wordt de firewall opnieuw " +"gestart om de bijgewerkte configuratie toe te passen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Extern IP-adres gebruiken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Intern IP-adres gebruiken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Gebruik ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Gebruik deze optie om zoneverkeer te classificeren op basis van onbewerkte, " +"niet door uci beheerde netwerkapparaten." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Gebruik deze optie om zoneverkeer te classificeren op bron- of " +"bestemmingssubnet in plaats van op netwerken of apparaten." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Geldige firewallmarkering vereist" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Woensdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Weekdagen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR firewall markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR-markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Uw apparaat heeft geen firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Uw apparaat gebruikt een firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Forwardings" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "accepteer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "elke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "elke zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "elke/alle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "firewallmarkering toepassen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "conntrack helper toewijzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatisch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap is alleen ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Bestemmings IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Bestemming MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Bestemming (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Bestemmingspoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Bestemming ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "niet herschrijven" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "niet volgen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "laat vallen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 ondersteunt verwijzingen en het maken van IP-sets om het matchen " +"van grote adreslijsten te vereenvoudigen zonder de noodzaak om één regel per " +"item te maken om te matchen. Poortbereiken in ipsets worden niet ondersteund " +"door firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "vanpoort-naarpoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "uur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Voor gebruik met Match datatypes: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lijst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "poort: Poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "afwijzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "seconde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Bron ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Bron IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Bron MAC adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Bron (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Bronpoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "dit apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "deze nieuwe zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "onbeperkt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "niet gespecificeerd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "tot 65536 vermeldingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "geldige firewallmarkering" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Op software gebaseerde offloading voor routing/NAT" diff --git a/luci-app-firewall/po/pl/firewall.po b/luci-app-firewall/po/pl/firewall.po index 538e8713f..ba3e23ce7 100644 --- a/luci-app-firewall/po/pl/firewall.po +++ b/luci-app-firewall/po/pl/firewall.po @@ -3,82 +3,90 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-26 21:49+0000\n" -"Last-Translator: Marcin Net \n" +"PO-Revision-Date: 2024-11-29 19:50+0000\n" +"Last-Translator: Piotr Kołtun \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.11-dev\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.9-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 i " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP z odmianami %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"%{dscp.val}:%{dscp.val}}}%{helper?, helper " -"%{helper.inv?%{helper.val}:%{helper." -"val}}}" +"%{src?%{dest?Przekazywane:Przychodzące}:Wychodzące} %{ipv6?%{ipv4?IPv4 i IPv6:IPv6}:IPv4}%{proto?, protokół " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP z odmianami %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, znacznik " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, pomocnik %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- dodaj IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- dodaj MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "Akceptuj %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "Zapobieganie przepisywaniu źródła" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -"Przekazuj do %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Przekazuj do %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -"Porzuć %{src?%{dest?forward:input}:output}" +"Porzucaj %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" @@ -86,29 +94,29 @@ msgstr "" "Przydziel DSCP klasyfikacja %{set_dscp}" "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -"Przydziel conntrack pomoc %{set_helper}" +"Przydziel conntrack-pomocnika " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" "%{set_mark?Assign:XOR} znacznik zapory " "sieciowej %{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" "Automatycznie przepisz źródłowy adres " "IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" @@ -116,38 +124,38 @@ msgstr "" "Nie śledź %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" "Odrzucaj %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -"Statystycznie przepisz do źródła %{snat_ip?" -"IP %{snat_ip}} %{snat_port?port %{snat_port}}" +"Statycznie przepisz do źródła %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "Należy podać adres IP do ponownego zapisu!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "AKCEPTUJ - Wyłącz przepisywanie adresów" +msgstr "ACCEPT - Wyłącz przepisywanie adresów" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Akcja" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -157,7 +165,7 @@ msgstr "" "docelowej, np. -p tcp --dport 443 tylko w celu dopasowania " "ruchu wychodzącego HTTPS." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -166,37 +174,49 @@ msgstr "" "docelowej, np. -p tcp --sport 443 tylko w celu dopasowania " "ruchu przychodzącego HTTPS." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Rodzina adresów, wewnętrzny adres IP muszą być zgodne" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Rodzina adresów, adres źródłowy, adres docelowy, przepisany adres IP muszą " +"być zgodne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Ustawienia zaawansowane" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "Zezwól na \"nieprawidłowy\" ruch" +msgstr "Zezwól na „nieprawidłowy” ruch" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "Zezwól na przekazywanie z strefy źródłowej:" +msgstr "Zezwól na przekazywanie ze strefy źródłowej:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Zezwól na przekazywanie do strefy docelowej:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Każdy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Każdy dzień" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -206,59 +226,68 @@ msgstr "" "ustanowionych połączeniach. Format to wartość [/mask]. Jeśli maska jest " "określona, wówczas ustawione w niej bity są zerowane." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "Zastosuj daną klasę lub wartość DSCP do ustanowionych połączeń." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -"Przypisz określonego pomocnika śledzenia połączeń do dopasowanego ruchu." +"Przydziel określonego pomocnika śledzenia połączeń do dopasowanego ruchu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" -msgstr "Automatyczne przydzielanie pomocy" +msgstr "Automatyczne przydzielanie pomocnika" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -"Automatycznie przydzielaj pomocników conntrack'a na podstawie protokołu " -"ruchu i portu" +"Automatycznie przydzielaj pomocników conntrack na podstawie protokołu ruchu " +"i portu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Komentarz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Ustawienia conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Pomocnicy conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Zawartość została zapisana." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Kontynuuj" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Liczniki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Objęte urządzenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Objęte sieci" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Objęte podsieci" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Własne reguły" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -268,160 +297,195 @@ msgstr "" "są objęte składnią zapory. Polecenia wykonywane są po każdym restarcie " "zapory, zaraz po załadowaniu zestawu reguł domyślnych." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "Klasyfikacja DSCP" +msgstr "klasyfikacja DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "Znacznik DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "Wymagany znacznik DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "Adres docelowy" +msgstr "Adres przeznaczenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Port docelowy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Strefa docelowa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Nazwa urządzenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -"Nie instaluj dodatkowych reguł odrzucania ruchu przekazywanego z conntrack " -"state invalid. Może to być wymagane w przypadku skomplikowanych " -"asymetrycznych ustawień trasy." +"Nie instaluj dodatkowych reguł odrzucania ruchu przekazywanego ze stanem " +"conntrack nieprawidłowy. Może to być wymagane w przypadku " +"skomplikowanych asymetrycznych ustawień trasy." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "Porzuć wadliwe pakiety" +msgstr "Porzucaj wadliwe pakiety" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Włącz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "Włącz NAT Loopback" +msgstr "Włącz pętlę zwrotną NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" -msgstr "Włącz ochronę SYN-flood" +msgstr "Włącz ochronę przed SYN‑flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Włącz logowanie tej strefy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Włącz translację adresów sieciowych i portów IPv4 (NAT4 lub NAPT4) dla ruchu " +"wychodzącego w tej strefie. Jest ona zazwyczaj włączona w strefie wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Włącz translację adresów sieciowych i portów IPv6 (NAT6 lub NAPT6) dla ruchu " +"wychodzącego w tej strefie." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Włączone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Włącza śledzenie liczby pakietów i bajtów dla zestawu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "Zaleca się użyć: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Funkcja eksperymentalna. Nie w pełni kompatybilna z QoS/SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -"Dokładnie wybiera dozwolone pomoce śledzenia połączeń dla ruchu strefowego" +"Dokładnie wybiera dozwolonych pomocników śledzenia połączeń dla ruchu " +"strefowego" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Zewnętrzne adresy IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Port zewnętrzny" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Dodatkowe argumenty" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Dodatkowe argumenty przeznaczenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Dodatkowe argumenty tablicy IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Dodatkowe argumenty zródłowe" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Rodzina" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Zapora sieciowa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Zapora sieciowa - Własne reguły" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Zapora sieciowa - Zestawy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Zapora sieciowa - Zasady NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "Zapora sieciowa - Przekazywane porty" +msgstr "Zapora sieciowa - Przekazywanie portów" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "Zapora sieciowa - Reguły ruchu" +msgstr "Zapora sieciowa - Reguły ruchu sieciowego" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "Zapora sieciowa - Ustawienia strefy" +msgstr "Zapora sieciowa - Ustawienia stref" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "Migracja konfiguracji zapory sieciowej" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Typ flow offloadingu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "Przekazuj" +msgstr "Ruch przekazujący" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -"Przekazywanie IPv4 %{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"Przekazano %{ipv6?%{ipv4?IPv4 i IPv6:IPv6}:" +"IPv4}%{proto?, protokół {proto#%{next?, }%{item.name}}}%{mark?, znacznik %{mark." +"val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Piątek" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" -"Z %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " -"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" -"%{item." -"ival}}}" +"Z %{src}%{src_device?, interfejs %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" -"Z %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " -"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" -"%{item." -"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" -"}}" +"Z %{src}%{src_device?, interfejs %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -"Z %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"Z %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "Ustawienia główne" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Udziel dostępu do konfiguracji zapory sieciowej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Sprzętowy flow offloading do trasowania z/bez NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "Sprzętowy flow offloading" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (zakres)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Zestawy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "Adresy IP/Sieci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "Adresy IP/Sieci/Adresy MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 i IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Tylko IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Maskarada IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Tylko IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Urządzenie przychodzące" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Plik dołączany" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" -"Przychodzące IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " -"with types %{item.types#%{next?, }%{item}}:" -"%{item.name}}}}%{mark?, mark %{item}}:" +"%{item.name}}}}%{mark?, mark " -"%{mark.val}}%{helper?, helper %{helper.inv?%{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Przychodzące %{ipv6?%{ipv4?IPv4 i IPv6:IPv6}:IPv4}%{proto?, protokół %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"z typami %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, znacznik %{mark.val}}%{helper?, pomocnik %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Początkowy rozmiar wartości skrótu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Ruch przychodzący" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Wewnętrzny adres IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Port wewnętrzny" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Strefa wewnętrzna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Przekazywanie wewnątrzstrefowe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Nieprawidłowy znacznik DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Nieprawidłowa wartość graniczna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nieprawidłowa nazwa zestawu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Naruszenie limitu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Ograniczenie logowania" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Dopasowanie limitu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" "Dopasowanie limitu do %{limit.num} pakiety na %{limit.unit}%{limit.burst? burst %{limit.burst}}" +"var>%{limit.burst? seria %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Ograniczona maskarada włączona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "Ogranicza ruch zgodny z określoną stawką." +msgstr "Ogranicza dopasowanie ruchu do określonej szybkości." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "Źródło pętli zwrotnej IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "MASQUERADE - Automatyczne przepisywanie na interfejs wyjściowy IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Dostosuj MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Maskarada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Dopasuj" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "Dopasuj DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Dopasuj typ ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "Dopasuj urządzenie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." -msgstr "Dopasuj przesyłany ruch skierowany na podany adres IP." +msgstr "Dopasuj przekazywany ruch skierowany na podany adres IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -"Dopasuj przesyłany ruch skierowany na dany port docelowy lub zakres portów." +"Dopasuj przekazywany ruch skierowany na dany port docelowy lub zakres portów." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." -msgstr "Dopasuj przesyłany ruch z tego adresu IP lub zakresu." +msgstr "Dopasuj przekazywany ruch z tego adresu IP lub zakresu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -"Dopasuj przesyłany ruch pochodzący z danego portu źródłowego lub zakresu " +"Dopasuj przekazywany ruch pochodzący z danego portu źródłowego lub zakresu " "portów." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "Dopasuj pomocnika" +msgstr "Pomocnik dopasowania" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -646,30 +778,38 @@ msgstr "" "Dopasuj ruch przychodzący do danego portu docelowego lub zakresu portów na " "tym hoście" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "Znacznik dopasowania" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "Dopasuj ruch, używając określonego pomocnika śledzenia połączeń." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "Odpowiada konkretnemu znakowi zapory lub zakresowi różnych znaków." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -"Dopasowuje przesyłany ruch przy użyciu określonego wychodzącego urządzenia " +"Dopasowuje przekazywany ruch przy użyciu określonego wychodzącego urządzenia " "sieciowego." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "Dopasowuje ruch niosący określone oznaczenie DSCP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maksymalna liczba wpisów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maksymalna długość" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -678,22 +818,22 @@ msgstr "" "ładowana jednorazowo za każdym razem, gdy limit określony powyżej nie " "zostanie osiągnięty, aż do tej liczby." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Poniedziałek" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Dni miesiąca" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "Zasady NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -701,26 +841,40 @@ msgstr "" "Reguły NAT umożliwiają precyzyjną kontrolę źródłowego adresu IP w celu " "użycia ruchu wychodzącego lub przekazywanego." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nazwa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Maska sieci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Brak" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Niepełna kompatybilność z QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Dopasuj tylko przychodzący ruch skierowany do danego adresu IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Dopasuj tylko ruch z tych adresów MAC." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Dopasuj tylko ruch przychodzący z tego adresu IP lub zakresu adresów." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -728,28 +882,45 @@ msgstr "" "Dopasuj tylko ruch przychodzący z podanego portu źródłowego lub zakresu " "portów na hoście klienta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "Urządzenie wychodzące" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Strefa wychodząca" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Ruch wychodzący" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Dopasowanie pola pakietu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Pola pakietów do dopasowania.
Składnia: direction_datatype. " +"np.: src_port, dest_net.
Kierunki: src, dst. " +"Typy danych: ip, port, mac, net, set.
Prefiksy kierunku są " +"opcjonalne.
*Uwaga: typ danych set nie jest obsługiwany w " +"fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" "Przekazuje dodatkowe argumenty do iptables. Zachowaj szczególną ostrożność!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -764,12 +935,16 @@ msgstr "" "złamanie zestawu reguł zapory sieciowej, całkowicie odsłaniając wszystkie " "usługi." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Ścieżka do pliku CIDR, podsieci, adresów IP hosta itp.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Przekazywanie portów" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -777,77 +952,89 @@ msgstr "" "Przekazanie portów pozwala komputerom z internetu na połączenia z " "komputerami z sieci LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Zakres portów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protokół" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Przekieruj ruch przychodzący na podany port do wskazanego hosta w sieci " "wewnętrznej" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Przekieruj ruch przychodzący do wskazanego hosta w sieci wewnętrznej" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "Wymaga sprzętowej obsługi NAT. Wdrożono dla co najmniej mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Patrz zestaw zewnętrzny" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Strefy odbicia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Wymaga obsługi sprzętowej NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Ogranicz maskaradę do wskazanych podsieci docelowych" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Ogranicz maskaradę do wskazanych podsieci źródłowych" -# Wstawiłem rodzinę gdyż gdzieś wcześniej było tak opisane ale klasa pasuje mi tu bardziej. -# Obsy - niestety ale "rodzina". W gui dotyczy to wyboru IPv4/IPv6, więc "rodzina" a nie klasa. -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Ogranicz do rodziny adresów" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "Przepisz adres IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "Przepisz dopasowany ruch do określonego źródłowego adresu IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "Przepisz dopasowany ruch do określonego portu źródłowego lub zakresu portów." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Przepisz port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "Trasowanie/NAT Offloading" +msgstr "Offloading trasowania/NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - Przepisz do określonego źródłowego adresu IP lub portu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Sobota" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "Ustaw znacznik" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -856,40 +1043,40 @@ msgstr "" "[/mask]. Jeśli maska jest określona, modyfikowane są tylko te bity ustawione " "w masce." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Oprogramowanie oparte na offloading dla trasowania/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Programowy flow offloading do trasowania/NAT." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Programowy flow offloading" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Źródłowy adres IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Źródłowy adres MAC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Adres źródłowy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Port źródłowy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Strefa źródłowa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -897,7 +1084,7 @@ msgstr "" "Określa, czy powiązać tę regułę ruchu z określonym przychodzącym, czy " "wychodzącym urządzeniem sieciowym." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -905,32 +1092,36 @@ msgstr "" "Określa, czy użyć zewnętrznego czy wewnętrznego adresu IP do odbijanego " "ruchu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Data rozpoczęcia (rrrr-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Czas rozpoczęcia (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Czas rozpoczęcia (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" -msgstr "Data zakończenia (yyyyy-mm-dd)" +msgstr "Data zatrzymania (rrrr-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Czas zatrzymania (yyyyy-mm-dd)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Czas zatrzymania (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Metoda przechowywania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Niedziela" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." @@ -938,16 +1129,16 @@ msgstr "" "Istniejąca konfiguracja zapory sieciowej musi zostać zmieniona, aby LuCI " "mógł działać prawidłowo." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -"Zapora tworzy strefy z twoich interfejsów sieciowych, aby kontrolować ruch " -"sieciowy." +"Zapora tworzy strefy na interfejsach sieciowych, aby kontrolować przepływ " +"ruchu w sieci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -958,12 +1149,12 @@ msgid "" msgstr "" "Opcje poniżej kontrolują politykę przekazywania pomiędzy tą strefą (%s) a " "innymi strefami. Strefy docelowe obejmują przekazywany ruch " -"pochodzący z %q. Strefy źródłowe match forwarded " -"traffic from other zones skierowane do %q. Reguła " +"pochodzący z %q. Strefy źródłowe pasują do ruchu " +"przekazanego z innych stref skierowanych do %q. Reguła " "przekazywania jest jednokierunkowa, np. przekazywanie z sieci LAN " "do WAN nie implikuje pozwolenia na przekazywanie z sieci WAN do LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -971,28 +1162,36 @@ msgid "" "forwarded traffic between different networks within the zone. Covered " "networks specifies which available networks are members of this zone." msgstr "" -"Ta sekcja definiuje ustawienia ogólne %q. Opcje wejście i " -"wyjście określające domyślną politykę dla ruchu przychodzącego i " -"wychodzącego w tej strefie, podczas gdy przekazywanie opisuje " -"politykę ruchu przekazywanego pomiędzy różnymi sieciami wewnątrz strefy. " -"Objęte sieci określają dostępne sieci będące członkami tej strefy." +"Ta sekcja określa ustawienia ogólne %q. Opcje Ruch przychodzący " +"i Ruch wychodzący ustalają domyślne zasady dla ruchu przychodzącego " +"i wychodzącego w tej strefie, podczas gdy Ruch przekazujący opisuje " +"zasady przekazywania ruchu między różnymi sieciami w obrębie strefy. Opcja " +"Objęte sieci określa, które dostępne sieci należą do tej strefy." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Czwartek" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Ograniczenia czasowe" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Czas w UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Ograniczenia czasowe są włączone dla tej reguły" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Limit czasu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" -"Do %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " -"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" -"%{item." -"ival}
}}" +"Do %{dest}%{dest_device?, interfejs %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -"Do %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " -"%{dest_port#%{next?, }%{item.ival}}}" +"Do %{dest}%{dest_device?, poprzez interfejs %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -"Do %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"Do %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "Pomocnik śledzenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Reguły ruchu sieciowego" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Reguły ruchu sieciowego definiują politykę dla pakietów przechodzących " -"między strefami, na przykład aby odrzucać ruch między konkretnymi hostami " -"albo otworzyć porty WAN routera." +"między strefami, aby np. odrzucać ruch między hostami lub otwierać porty WAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Wtorek" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Nie można zapisać zawartości: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 -msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "Nieznany lub nie zainstalowany pomocnik conntrack \"%s\"" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Jednostka: sekundy. Domyślnie 0 oznacza, że wpis jest dodany na " +"stałe do zestawu.
Maks.: 2147483 sekundy." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Nieznany lub niezainstalowany pomocnik conntrack \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "Nienazwany NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Przekazywanie bez nazwy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Nieznana zasada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Zestaw nienazwany" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Strefa bez nazwy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "Nierozpoznany protokół" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" "Po naciśnięciu przycisku „Kontynuuj” sekcje przekierowujące z docelowym " -"\"SNAT\" zostaną przekonwertowane na sekcje \"nat\", a zapora sieciowa " -"zostanie ponownie uruchomiona w celu zastosowania zaktualizowanej " -"konfiguracji." +"„SNAT” zostaną przekonwertowane na sekcje „nat”, a zapora sieciowa zostanie " +"ponownie uruchomiona w celu zastosowania zaktualizowanej konfiguracji." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Użyj zewnętrznego adresu IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Użyj wewnętrznego adresu IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Użyj ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -"Opcja ta służy do klasyfikacji ruchu strefowego według surowych, nie-" -"uci obsługiwanych urządzeń sieciowych." +"Opcji tej należy używać do klasyfikacji ruchu strefowego według surowych, " +"niezarządzanych przez uci urządzeń sieciowych." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1123,437 +1338,326 @@ msgstr "" "Opcji tej należy używać do klasyfikacji ruchu strefowego według źródła lub " "podsieci docelowej zamiast sieci lub urządzeń." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "Wymagany prawidłowy znacznik zapory sieciowej" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Środa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Dni tygodnia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "Znacznik zapory XOR" +msgstr "znacznik zapory XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "Znacznik XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Na tym urządzeniu nie działa firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Na tym urządzeniu działa firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Strefa ⇒ Przekazywanie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Strefy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Strefy, z których mają być tworzone reguły odbicia. Jeśli opcja nie jest " +"ustawiona, używana jest tylko strefa docelowa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "akceptuj" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "dowolny" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "dowolna strefa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "dowolny/wszystkie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" -msgstr "Zastosuj znacznik zapory" +msgstr "zastosuj znacznik zapory" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" -msgstr "przypisz pomocnika conntrack" +msgstr "przydziel pomocnika conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatyczne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap to tylko ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" -msgstr "Dzień" +msgstr "dzień" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Docelowy adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Docelowy adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Docelowa (pod)sieć" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Port docelowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Docelowy ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "Nie przepisuj" +msgstr "nie przepisuj" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "nie śledź" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" -msgstr "porzuć" +msgstr "porzucaj" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 obsługuje odwoływanie się i tworzenie zestawów IP, aby uprościć " +"dopasowywanie dużych list adresów bez potrzeby tworzenia jednej reguły dla " +"każdego elementu do dopasowania. Zakresy portów w zestawach ipset nie są " +"obsługiwane przez firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "zportu-doportu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "godzina" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Do użytku z dopasowanymi typami danych: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "list" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "adresmac|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "minuta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (Pod)sieć" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "odrzucaj" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "sekunda" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Źródłowy ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Źródłowy adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Źródłowy adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Źródłowa (pod)sieć" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Źródłowy port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "to urządzenie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "ta nowa strefa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "nielimitowane" +msgstr "nieograniczona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "nieokreślone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "do 65536 wpisów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "prawidłowy znacznik zapory sieciowej" -#~ msgid "%s in %s" -#~ msgstr "%s w %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s z %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s w %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d pakietów na %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "" -#~ "%d pakietów na %s, popsutych %d pakietów." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s i limit do %s" - -#~ msgid "Accept forward" -#~ msgstr "Zaakceptuj przekazywanie" - -#~ msgid "Accept input" -#~ msgstr "Zaakceptuj wejście" - -#~ msgid "Accept output" -#~ msgstr "Zaakceptuj wyjście" - -#~ msgid "Destination IP address" -#~ msgstr "Docelowy adres IP" - -#~ msgid "Discard forward" -#~ msgstr "Odrzuć przekazywanie" - -#~ msgid "Discard input" -#~ msgstr "Odrzuć wejście" - -#~ msgid "Discard output" -#~ msgstr "Odrzuć wyjście" - -#~ msgid "Do not rewrite" -#~ msgstr "Nie przepisuj" - -#~ msgid "Do not track forward" -#~ msgstr "Nie śledź przekazywania" - -#~ msgid "Do not track input" -#~ msgstr "Nie śledź wejścia" - -#~ msgid "Do not track output" -#~ msgstr "Nie śledź wyjścia" - -#~ msgid "Forward to" -#~ msgstr "Przekazuj do" - -#~ msgid "From %s in %s" -#~ msgstr "Z %s w %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Z %s w %s ze źródłem %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Z %s w %s ze źródłem %s i %s" - -#~ msgid "From %s on this device" -#~ msgstr "Z %s na to urządzenie" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "Z %s na to urządzenie ze źródłem %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "Z %s na to urządzenie ze źródłem %s oraz %s" - -#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" -#~ msgstr "Z %{ipaddr?:any host} %{port?with source %{port}}" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "Zakres IP" - -#~ msgid "IPs" -#~ msgstr "IPs" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MACs" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Offloading oparty na oprogramowaniu dla trasowania/NAT" #~ msgid "" -#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " -#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Dopasuj %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " -#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" - -#~ msgid "Network" -#~ msgstr "Sieć" - -#~ msgid "Refuse forward" -#~ msgstr "Odmowa przekazania" - -#~ msgid "Refuse input" -#~ msgstr "Odmowa wejścia" - -#~ msgid "Refuse output" -#~ msgstr "Odmowa wyjścia" - -#~ msgid "Rewrite to" -#~ msgstr "Przepisz do" - -#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" -#~ msgstr "Przepisz do %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" - -#~ msgid "Rewrite to outbound device IP" -#~ msgstr "Przepisz do adresu IP urządzenia wychodzącego" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Do %s w %s na tym urządzeniu" - -#~ msgid "To %s in %s" -#~ msgstr "Do %s w %s" - -#~ msgid "To %s on this device" -#~ msgstr "Do %s na tym urządzeniu" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Do %s, %s w %s" +#~ "Włącz translację adresów sieciowych i portów (NAT lub NAPT) dla ruchu " +#~ "wychodzącego w tej strefie. Jest to zazwyczaj włączone w strefie wan." #~ msgid "" -#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " -#~ "%{device?egress device %{device}}" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "Do %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " -#~ "%{device?egress device %{device}}" - -#~ msgid "Via %s" -#~ msgstr "Przez %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Przez %s w %s" - -#~ msgid "any host" -#~ msgstr "dowolny host" - -#~ msgid "any router IP" -#~ msgstr "dowolne IP routera" - -#~ msgid "not" -#~ msgstr "Nie" - -#~ msgid "port" -#~ msgstr "port" - -#~ msgid "ports" -#~ msgstr "porty" - -#~ msgid "type" -#~ msgstr "typ" - -#~ msgid "types" -#~ msgstr "typy" - -#~ msgid "Force connection tracking" -#~ msgstr "Wymuś śledzenie połączeń" - -#~ msgid "Add" -#~ msgstr "Dodaj" - -#~ msgid "Add and edit..." -#~ msgstr "Dodaj i edytuj..." - -#~ msgid "External zone" -#~ msgstr "Strefa zewnętrzna" - -#~ msgid "New SNAT rule" -#~ msgstr "Nowa reguła SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Nowa reguła przekazywania (forward)" - -#~ msgid "New input rule" -#~ msgstr "Nowa reguła wejściowa (input)" - -#~ msgid "New port forward" -#~ msgstr "Nowe przekierowanie portu" - -#~ msgid "New source NAT" -#~ msgstr "Nowy NAT źródłowy" - -#~ msgid "Open ports on router" -#~ msgstr "Otwarte porty na routerze" - -#~ msgid "Other..." -#~ msgstr "Inne..." - -#~ msgid "To source IP" -#~ msgstr "Do źródłowego IP" - -#~ msgid "To source port" -#~ msgstr "Do źródłowego portu" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Nienazwany wpis)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Nienazwana reguła)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(Nienazwany SNAT)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Przekazywanie pomiędzy strefami" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Dopasuj przekazywany ruch do danego docelowego portu lub zakresu portów" +#~ "Przekazywane IPv4 %{proto?, protokół %{proto#%{next?, }%{item.name}}}%{mark?, znacznik %{mark.val}}" #~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" #~ msgstr "" -#~ "Dopasuj przychodzący ruch pochodzący z danego portu źródłowego lub " -#~ "zakresu portów na hoście klienta." - -# Dosłownie przetłumaczone, nie bardzo wiem czy chodzi o czynność przepisywania pakietu przez usługę czy to jakieś ogólne sformułowanie... -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Przepisz dopasowany ruch do wskazanych adresów." - -# Jak wyżej chodzi o przepisanie pakietu przez usługę? -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "" -#~ "Przepisz dopasowany ruch do danego portu źródłowego. Można zostawić puste " -#~ "aby przepisać tylko adres IP" - -#~ msgid "Rewrite to source %s" -#~ msgstr "Przepisz do źródła %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Przepisz do źródła %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "Adres IP SNAT" - -#~ msgid "SNAT port" -#~ msgstr "Port SNAT" - -#~ msgid "Source NAT" -#~ msgstr "NAT źródłowy" - -# http://www.digipedia.pl/def/doc/id/677604507/name/SNAT/ -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." -#~ msgstr "" -#~ "SNAT używany jest wtedy, gdy zmieniane są adresy pakietów połączenia " -#~ "wychodzącego, czyli pakiety źródłowe. Wykonywany jest zawsze po " -#~ "routowaniu (POSTROUTING), a więc w chwili, gdy pakiety są gotowe opuścić " -#~ "host. IPmasquerading jest formą SNAT." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Ta strona pozwala zmienić zaawansowane ustawienia przekierowania portów. " -#~ "W większości przypadków nie ma potrzeby zmieniać tych ustawień." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Ta strona pozwala zmienić zaawansowane ustawienia reguły ruchu " -#~ "sieciowego, takie jak pasujące źródło i hosty docelowe." - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Możesz określić kilka wybierając \"-- własne --\" i wpisując protokoły " -#~ "rozdzielone spacją." - -#~ msgid "Zone %q" -#~ msgstr "Strefa %q" +#~ "Przychodzące IPv4%{proto?, protokół %{proto#%{next?, }%{item.types?%{item.name}ICMP z odmianami %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, znacznik %{mark.val}}%{helper?, pomocnik %{helper.inv?%{helper.val}" +#~ ":%{helper.val}}}" diff --git a/luci-app-firewall/po/pt/firewall.po b/luci-app-firewall/po/pt/firewall.po index d031d7171..18c1cc1fb 100644 --- a/luci-app-firewall/po/pt/firewall.po +++ b/luci-app-firewall/po/pt/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-20 05:58+0000\n" -"Last-Translator: ssantos \n" +"PO-Revision-Date: 2024-09-21 03:42+0000\n" +"Last-Translator: Sergio Eustaquio \n" "Language-Team: Portuguese \n" "Language: pt\n" @@ -12,111 +12,151 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.8-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 e " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP com tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark." +"val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper." +"val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- adicionar IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- adicionar MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "Aceitar %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "Prevenir a reescrita da fonte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"Encaminhar para %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Descartar %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"Atribuir DSCP classificação %{set_dscp}" +"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"Atribuir auxiliar conntrack " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"%{set_mark?Assign:XOR} marca do firewall " +"%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Reescrever automaticamente o IP de " +"origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Não rastreie %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"Rejeita %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"Reescrever estaticamente para a origem " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "Um IP reescrito deve ser especificado!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "ACCEPT - Deactivate reescrever endereços" +msgstr "ACCEPT - Desativar reescrever endereços" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Ação" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -126,46 +166,58 @@ msgstr "" "destino da zona, por exemplo, -p tcp -- dport 443 para " "corresponder apenas ao tráfego https de saída." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" "Argumentos adicionais brutos iptables para classificar o tráfego de " -"fonte de zona, por exemplo, -p tcp - esporte 443 para " +"fonte de zona, por exemplo, -p tcp - sport 443 para " "corresponder apenas ao tráfego HTTPS de entrada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Família de endereços, o endereço de IP interno deve corresponder" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Família de endereços, endereço de origem, endereço de destino, o endereço de " +"IP reescrito deve corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" -msgstr "Definições Avançadas" +msgstr "Configurações avançadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "Permitir o tráfego \"inválido\"" +msgstr "Permitir tráfego \"inválido\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Permitir encaminhamento de zonas de origem:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Permitir encaminhamento para zonas de destino:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Qualquer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Qualquer dia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -175,60 +227,69 @@ msgstr "" "ligações estabelecidas. Formato é valor[/máscara]. Se uma máscara for " "especificada, os bits definidos na máscara são zerados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "Aplique a classe ou valor de DSCP dado às conexões estabelecidas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" "Atribua o ajudante de rastreamento de conexão especificado para o tráfego " "combinado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Atribuição automática de assistentes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" "Atribuir assistentes de conntrack automaticamente com base no protocolo de " "tráfego e na porta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentário" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Configurações do Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Assistentes do Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Os conteúdos foram gravados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Continuar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contadores" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Aparelhos abrangidos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Redes abrangidas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Subredes abrangidas" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Regras Personalizadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -239,37 +300,37 @@ msgstr "" "comandos são executados a seguir ao reinicio da firewall, logo a seguir ao " "conjunto de regras predefinidas serem carregadas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "Classificação de DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "Marca de DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "Marca de DSCP necessária" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Endereço de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Porta de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Zona de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Nome do aparelho" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -278,115 +339,157 @@ msgstr "" "conntrack invalid. Isto pode ser necessário para configurações " "complexas de rotas assimétricas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "Cancelar pacotes inválidos" +msgstr "Descartar pacotes inválidos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Ativar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Ativar NAT Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Ativar a Proteção SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Ativar registo nesta zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv4 (NAT4 ou NAPT4) para o " +"tráfego de saída nesta zona. Normalmente, isso é ativado na zona wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv6 (NAT6 ou NAPT6) para o " +"tráfego de saída nesta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" +"Ativa o rastreamento da contagem dos pacotes e dos bytes para o conjunto." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "À espera de: %s" +msgstr "Esperando: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Característica experimental. Não totalmente compatível com QoS/SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" "Escolhe explicitamente os assistentes de rastreamento de conexão permitidos " "para o tráfego da zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Endereço IP externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Porta externa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Argumentos adicionais" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Argumentos adicionais de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Argumentos adicionais do iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Argumentos adicionais da fonte" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Família" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Firewall - Regras Personalizadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Firewall - Regras de NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Firewall - Encaminhamento de Portas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Firewall - Regras de Tráfego" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Firewall - Definições de Zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Migração de configuração do Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Encaminhar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" +"Encaminhado %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Sexta-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Configurações gerais" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Conceder acesso à configuração do firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 -msgid "General Settings" -msgstr "Configurações Gerais" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "Descarga de fluxo em hardware" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (intervalo)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Redes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Redes/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 e IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "Só IPv4" +msgstr "Apenas IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascaramento IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "Só IPv6" +msgstr "Apenas IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Aparelho de entrada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Incluir ficheiro" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Chegando %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"com tipos %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Tamanho inicial do hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Entrada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Endereço IP interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Porta interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Zona Interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Reencaminhamento na zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Marca de DSCP inválida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Valor limite inválido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nome de conjunto inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Limite de burst" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Limitar registo de mensagens" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Limitar a correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" +"Limitar a correspondência de %{limit.num} pacotes por " +"%{limit.unit}%{limit.burst? estouro %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Mascaramento limitado ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "Limita o tráfego de acordo com a taxa especificada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "IP fonte de loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "" +msgstr "MASQUERADE - Reescreve automaticamente para o IP da interface de saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Fixação de MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Mascaramento" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Corresponder" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "" +msgstr "Correspondência DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Correspondência do tipo de ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "" +msgstr "Aparelho de correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" +"Encaminha o tráfego que obteve correspondência para um determinado endereço " +"de IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" +"Encaminha o tráfego que obteve correspondência para uma determinada porta de " +"destino ou uma faixa de portas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" +"Encaminha o tráfego que obteve correspondência deste IP ou uma faixa de IPs." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" +"Encaminha o tráfego que obteve correspondência originado de uma determinada " +"porta de origem ou faixa de portas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "" +msgstr "Auxiliar de correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -577,74 +786,109 @@ msgstr "" "O tráfego de entrada corresponde a uma dada porta de destino ou intervalo de " "portas neste host" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" -msgstr "" +msgstr "Marca de correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" +"Corresponder o tráfego usando uma conexão definida pelo auxiliar de " +"rastreamento." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" +"Corresponder uma marca de firewall especifica ou uma variedade de diferentes " +"marcas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" +"Corresponda o tráfego encaminhado usando um aparelho de rede de saída " +"indicado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" +"Compara o tráfego correspondente que esteja carregando uma marca DSCP " +"específica." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Total de registos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Comprimento máximo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" +"Quantidade inicial máxima de pacotes para comparar: este número é " +"recarregado por um cada vez que o limite especificado acima não é atingido, " +"até este número." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Segunda-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Dias do mês" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "Regras NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" +"As regras da NAT permitem o controle fino sobre o IP de origem para usar com " +"o tráfego de saída ou tráfego de encaminhamento." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Máscara de rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Não totalmente compatível com QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Só se tráfego de entrada corresponder ao endereço IP fornecido." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Só se o tráfego de entrada corresponder a um destes MACs." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Só se o tráfego de entrada corresponder a este IP ou intervalo." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -652,27 +896,44 @@ msgstr "" "Só se o tráfego de entrada corresponder à porta de origem fornecida ou de um " "intervalo de portas no host cliente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "" +msgstr "Aparelho de saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" -msgstr "" +msgstr "Zona de saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Campo do pacote coincidente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Campos do pacote que correspondem.
Síntaxe: direction_datatype. por exemplo: src_port, dest_net.
Modo de preparo: " +"src, dst. Tipos de dados: ip, port, mac, net, set. " +"
Os prefixos de direção são opcionais.
*Nota: o tipo de dados " +"set não é suportado no fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "Passa argumentos adicionais para o iptables. Usar com cuidado!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -686,12 +947,16 @@ msgstr "" "cuidado, pois valores inválidos podem tornar o conjunto de regras do " "firewall quebrado, expondo completamente todos os serviços." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Caminho ao ficheiro de CIDRs, sub-redes, IPs de host, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Encaminhamento de Portas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -699,157 +964,186 @@ msgstr "" "O Encaminhamento de Portas permite que computadores remotos na internet se " "liguem a um computador ou serviço especifico na rede privada (LAN)." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Faixa de portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protocolo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Redirecionar a entrada de trafego correspondente à porta fornecida no host " "interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Redirecionar o tráfego de entrada correspondente para o host interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" -"Requer suporte de hardware para NAT. Implementado pelo menos para mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consulte o conjunto externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zonas de reflexão" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Requer suporte de hardware para NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Restringir o Mascaramento às sub-redes de destino dadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Restringir Mascaramento a sub-redes de origem fornecidas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Restringir a família de endereços" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "Reescrever o endereço IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" +"Reescrever o tráfego compatível com o endereço IP de origem especificado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" +"Reescrever tráfego compatível com a porta de origem especificado ou uma " +"faixa de portas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Reescrever porta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "Descargar Roteamento/NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Reescrever para um IP de origem ou uma porta específica" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Sábado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "" +msgstr "Definir marca" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" +"Defina o valor da marca dada nas ligações estabelecidas. o formato é valor[/" +"máscara]. Se uma máscara for especificada, então apenas os bits definidos na " +"máscara são modificados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Descarga baseada em software para roteamento/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Descarga de fluxo de software" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Endereço IP de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Endereço MAC de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Endereço de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Porta de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zona de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" +"Especifica se esta regra de tráfego deve ser ligada a um aparelho de rede " +"específico de entrada ou de saída." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" +"Especifica se deve usar o endereço do IP externo ou interno para o tráfego " +"refletido." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Data de Início (aaaaa-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Hora de início (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Hora de início (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Data de Paragem (aaaaa-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Tempo de Parada (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Tempo de Parada (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Método de armazenamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Domingo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"A configuração de firewall existente precisa ser alterada para que o LuCI " +"funcione corretamente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -857,8 +1151,8 @@ msgstr "" "A firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " "tráfego." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -875,7 +1169,7 @@ msgstr "" "lan para wan não implica uma permissão para avançar de wan para lan " "também." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -890,22 +1184,30 @@ msgstr "" "abrangidas
especifica quais das redes disponíveis são membros desta " "zona." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Quinta-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Restrições de Tempo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Tempo em UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Restrições de tempo estão ativadas para esta regra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tempo limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" +"Para %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" +"Para %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" +"Para %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" -msgstr "" +msgstr "Auxiliar de rastreamento" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Regras de Tráfego" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "As Regras de Tráfego definem políticas para os pacotes que viajam entre " "diferentes zonas, por exemplo, para rejeitar trafego entre certos hosts ou " "para abrir portas WAN no router." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Terça-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Incapaz de gravar conteúdos: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unidade: segundos. Padrão 0 significa que a entrada é " +"adicionada permanentemente ao conjunto.
Max: 2147483 segundos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "" +msgstr "Auxiliar conntrack desconhecido ou não instalado \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "NAT sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Encaminhamento sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Regra sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Conjunto sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Zona sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Protocolo desconhecido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" +"Ao pressionar \"Continuar\", as seções \"redirecionar\" com o alvo \"SNAT\" " +"serão convertidas para seções \"nat\" e o firewall será reiniciado para " +"aplicar e atualizar as novas configurações." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Usar endereço IP externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" -msgstr "" +msgstr "Usar endereço IP interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Use o ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1010,7 +1347,7 @@ msgstr "" "Use esta opção para classificar o tráfego da zona por aparelhos de rede " "brutos, não geridos por uci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1018,404 +1355,326 @@ msgstr "" "Use esta opção para classificar o tráfego da zona por sub-rede de origem ou " "destino em vez de redes ou aparelhos." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "" +msgstr "Marca de firewall válida necessária" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Quarta-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Dias úteis" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "" +msgstr "Marca de firewall XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" -msgstr "" +msgstr "Marca XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "O seu aparelho não executa o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "O seu aparelho executa o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zona ⇒ Encaminhamentos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zonas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonas das quais as regras de reflexão devem ser criadas. Se não for " +"definido, apenas a zona de destino é utilizada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "aceitar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "qualquer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "qualquer zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "qualquer/todos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" -msgstr "" +msgstr "aplicar marca de firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" -msgstr "" +msgstr "atribuir auxiliar conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automático" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap é ipv4 apenas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "dia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: endereço MAC de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (sub)rede de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destino ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "" +msgstr "não reescrever" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "não seguir" +msgstr "não rastrear" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "descartar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 oferece suporte a referência e criação de conjuntos de IPs para " +"simplificar a correspondência de grandes listas de endereços sem a " +"necessidade de criar uma regra que coincida com cada item. Os intervalos das " +"portas em ipsets não são compatíveis com o firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "deporta-paraporta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "hora" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Endereço IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Para uso com tipos de dados que coincidam: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "minuto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "rede: (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "porta: Porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "rejeitar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "segundo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 -msgid "this device" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Origem do ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Origem do endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Origem (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "este aparelho" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "esta nova zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "ilimitado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "não especificado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "até 65536 entradas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "" +msgstr "marca de firewall válida" -#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" -#~ msgstr "De %{ipaddr?:qualquer host} %{port?com fonte %{port}}" - -#~ msgid "%s in %s" -#~ msgstr "%s em %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s with %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s em %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d pkts. por %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d pcts. por %s, burst %d pcts." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s e limite a %s" - -#~ msgid "Accept forward" -#~ msgstr "Aceitar o encaminhamento" - -#~ msgid "Accept input" -#~ msgstr "Aceitar a entrada" - -#~ msgid "Accept output" -#~ msgstr "Aceitar a saída" - -#~ msgid "Destination IP address" -#~ msgstr "Endereço IP de destino" - -#~ msgid "Discard forward" -#~ msgstr "Descartar o encaminhamento" - -#~ msgid "Discard input" -#~ msgstr "Descartar a entrada" - -#~ msgid "Discard output" -#~ msgstr "Descartar a saída" - -#~ msgid "Do not rewrite" -#~ msgstr "Não re-escrever" - -#~ msgid "Do not track forward" -#~ msgstr "Não rastrear o encaminhamento" - -#~ msgid "Do not track input" -#~ msgstr "Não rastrear a entrada" - -#~ msgid "Do not track output" -#~ msgstr "Não rastrear a saída" - -#~ msgid "Forward to" -#~ msgstr "Encaminhar para" - -#~ msgid "From %s in %s" -#~ msgstr "De %s em %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "De %s em %s com origem %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "De %s em %s com origem %s e %s" - -#~ msgid "From %s on this device" -#~ msgstr "De %s neste aparelho" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "De %s neste aparelho com a fonte %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "De %s neste aparelho com as fontes %s e %s" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "Intervalo de IP" - -#~ msgid "IPs" -#~ msgstr "IPs" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MACs" - -#~ msgid "Network" -#~ msgstr "Rede" - -#~ msgid "Refuse forward" -#~ msgstr "Recusar encaminhamento" - -#~ msgid "Refuse input" -#~ msgstr "Recusar entrada" - -#~ msgid "Refuse output" -#~ msgstr "Recusar saída" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Para %s no %s em este dispositivo" - -#~ msgid "To %s in %s" -#~ msgstr "Para %s em %s" - -#~ msgid "To %s on this device" -#~ msgstr "Para %s em este dispositivo" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Para %s, %s em %s" - -#~ msgid "Via %s" -#~ msgstr "Via %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Via %s no %s" - -#~ msgid "any host" -#~ msgstr "qualquer host" - -#~ msgid "any router IP" -#~ msgstr "qualquer IP do router" - -#~ msgid "not" -#~ msgstr "não" - -#~ msgid "port" -#~ msgstr "porta" - -#~ msgid "ports" -#~ msgstr "portas" - -#~ msgid "type" -#~ msgstr "tipo" - -#~ msgid "types" -#~ msgstr "tipos" - -#~ msgid "Force connection tracking" -#~ msgstr "Forçar rasto de ligação" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Descarga baseada em software para roteamento/NAT" #~ msgid "" -#~ "Prevent the installation of NOTRACK rules which would bypass " -#~ "connection tracking." +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Prevenir a instalação de regras NOTRACK que contornariam o " -#~ "rastreamento de conexão." - -#~ msgid "Disable" -#~ msgstr "Desativar" - -#~ msgid "Add" -#~ msgstr "Adicionar" - -#~ msgid "Add and edit..." -#~ msgstr "Adicionar e editar..." - -#~ msgid "External zone" -#~ msgstr "Zona externa" - -#~ msgid "New SNAT rule" -#~ msgstr "Nova regra SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Nova regra de encaminhamento" - -#~ msgid "New input rule" -#~ msgstr "Nova regra de entrada" - -#~ msgid "New port forward" -#~ msgstr "Novo encaminhamento de porta" - -#~ msgid "New source NAT" -#~ msgstr "Nova origem de NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Abrir portas no router" - -#~ msgid "Other..." -#~ msgstr "Outro..." - -#~ msgid "To source IP" -#~ msgstr "Para o IP de origem" - -#~ msgid "To source port" -#~ msgstr "Para a porta de origem" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Entrada Sem Nome)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Regra Sem Nome)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(SNAT Sem Nome)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Encaminhamento Inter-Zona" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "O tráfego encaminhado corresponde a uma determinada porta de destino ou " -#~ "intervalo de portas." +#~ "Ativar a conversão de endereços e portas de rede (NAT ou NAPT) para o " +#~ "tráfego de saída nessa zona. Isto é normalmente ativado na zona wan." #~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "O tráfego de entrada corresponde a uma dada porta ou de um intervalo de " -#~ "portas no host cliente." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Re-escrever para a origem %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Re-escrever para a origem %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "Endereço IP da SNAT" - -#~ msgid "SNAT port" -#~ msgstr "Porta SNAT" - -#~ msgid "Source NAT" -#~ msgstr "NAT de origem" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" #~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" #~ msgstr "" -#~ "NAT de origem é uma forma especifica de mascarar que permite um controlo " -#~ "melhorado sobre o IP de origem usado para o tráfego de saída, por " -#~ "exemplo, para mapear múltiplos endereços para as sub-redes internas." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Esta página permite-lhe alterar as definições avançadas da regra de " -#~ "entrada de tráfego, tal como correspondências de hosts de origem e " -#~ "destino." - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Pode especificar múltiplos seleccionando \"-- personalizado --\" e depois " -#~ "introduzir os protocolos separados por espaço." - -#~ msgid "Zone %q" -#~ msgstr "Zona %q" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/pt_BR/firewall.po b/luci-app-firewall/po/pt_BR/firewall.po index 481bc8c3f..a56ed3924 100644 --- a/luci-app-firewall/po/pt_BR/firewall.po +++ b/luci-app-firewall/po/pt_BR/firewall.po @@ -3,8 +3,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-02-22 11:57+0000\n" -"Last-Translator: Wellington Terumi Uemura \n" +"PO-Revision-Date: 2024-07-17 07:32+0000\n" +"Last-Translator: Janderson Vieira Santos \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -12,72 +12,80 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.11.1\n" +"X-Generator: Weblate 5.7-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 e " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP com tipos %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" -"%{dscp.val}}}%{helper?, helper %{helper.inv?" -"%{helper.val}:%{helper.val}}}" +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP com tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark." +"val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper." +"val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- Adicionar IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- Adicionar MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "Aceite %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "Prevenir a reescrita da fonte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -"Encaminhar para %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Encaminhar para %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" "Derruba %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" @@ -85,29 +93,29 @@ msgstr "" "Atribuir DSCP classificação %{set_dscp}" "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -"Atribuir auxiliar conntrack %{set_helper}" +"Atribuir auxiliar conntrack " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" "%{set_mark?Assign:XOR} marca do firewall " "%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" "Reescrever automaticamente o IP de " "origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" @@ -115,14 +123,14 @@ msgstr "" "Não rastreie %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" "Rejeita %{src?%{dest?forward:input}:" "output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" @@ -130,23 +138,23 @@ msgstr "" "Reescrever estaticamente para a origem " "%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "Um IP de reescrita deve ser especificado!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ACEITAR - Desativar a reescrita do endereço" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Ação" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -156,7 +164,7 @@ msgstr "" "da zona, por exemplo, -p tcp --dport 443 para corresponder " "apenas ao tráfego HTTPS de saída." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -165,37 +173,49 @@ msgstr "" "da zona, por exemplo, -p tcp --sport 443 para corresponder " "apenas ao tráfego HTTPS de entrada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Configurações Avançadas" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Família de endereços, o endereço IP interno deve corresponder" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Família de endereços, endereço de origem, endereço de destino, a reescrita " +"do endereço IP deve corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Configurações avançadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "Permitir tráfego \"inválido\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Permite o encaminhamento da zona de origem:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Permite o encaminhamento para a zona de destino:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Qualquer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Qualquer dia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -205,60 +225,69 @@ msgstr "" "ligações estabelecidas. O formato é o valor[/mask]. Se uma máscara for " "especificada, então os bits definidos na máscara são zerados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "Aplique a classe ou valor DSCP dado às conexões estabelecidas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" "Atribua o auxiliar de rastreamento de conexão especificado para o tráfego " "combinado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Atribuição automática de assistentes" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" "Atribuir automaticamente ajudantes de conntrack com base no protocolo de " "tráfego e na porta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentário" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Configurações do Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Ajudantes do Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "O conteúdo foi salvo." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Continuar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contadores" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Dispositivos cobertos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Redes cobertas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Sub-redes cobertas" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Regras Personalizadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -268,37 +297,37 @@ msgstr "" "cobertos por esta ferramenta. Os comandos serão executados após cada " "reinício do firewall, logo após a carga do conjunto de regras padrão." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "Classificação DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "Marca DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "Marca DSCP necessária" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Endereço de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Porta de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Zona de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Nome do dispositivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -307,121 +336,157 @@ msgstr "" "estado do conntrack for invalid. Isto pode ser necessário para " "configurações complexas e de rotas assimétricas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Descartar pacotes inválidos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "Ativar" +msgstr "Habilitar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Habilite o Loopback do NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Habilite proteção contra SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Habilite o registro nesta zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv4 (NAT4 ou NAPT4) para o " +"tráfego de saída nesta zona. Normalmente, isso é ativado na zona wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv6 (NAT6 ou NAPT6) para o " +"tráfego de saída nesta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" +"Ativa o rastreamento da contagem dos pacotes e dos bytes para o conjunto." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "Esperando: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" -"Funcionalidade experimental. Ela não é totalmente compatível com QoS/SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" "Escolhe explicitamente os assistentes de rastreamento de conexão permitidos " "para o tráfego da zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Endereço IP externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Porta Externa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Argumentos extras" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Argumentos extra de destino" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Argumentos extras para o iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Argumentos extras da fonte" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Família" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Firewall - Regras personalizadas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Firewall - Regras NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Firewall - Encaminhamento de Portas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Firewall - Regras de Tráfego" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Firewall - Configurações de Zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "Migração de configuração do Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Encaminhar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." -"val}}" +"Encaminhado %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Sexta-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " "%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#" -"%{next?, }%{item.ival}}}" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 -msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -msgstr "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"exceto %{item.val}.\"}>%{item.ival}}}%{src_mac?, MAC " "%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Configurações Gerais" +msgstr "Configurações gerais" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Conceder acesso à configuração do firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" -msgstr "Aceleração de fluxo de dados via Hardware" +msgstr "Aceleração do fluxo dos dados via hardware" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (intervalo)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Redes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Redes/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 e IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "Somente IPv4" +msgstr "Apenas IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascaramento IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "Somente IPv6" +msgstr "Apenas IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Dispositivo de entrada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper." -"val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Incluir arquivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Chegando %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"com tipos %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Tamanho inicial do hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Entrada" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Endereço IP interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Porta Interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Zona interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Encaminhamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Marca DSCP inválida" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Valor limite inválido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nome de conjunto inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Estouro limite" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Limita as mensagens de registro" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Limitar as correspondências" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -"Limitar a correspondência de %{limit.num} pacotes por " -"%{limit.unit}%{limit.burst? estouro %{limit.burst}}" +"Limitar a correspondência de %{limit.num} pacotes por " +"%{limit.unit}%{limit.burst? estouro %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Mascaramento limitado ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "Limita a correspondência de tráfego à taxa especificada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "IP da fonte de Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "MASQUERADE - Reescreve automaticamente para o IP da interface de saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Ajuste do MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Mascaramento" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" -msgstr "Casa" +msgstr "Correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "Correspondência DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" -msgstr "Casa com ICMP tipo" +msgstr "Correspondência de tipo ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "Dispositivo de correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" "Encaminha o tráfego que obteve correspondência para um determinado endereço " "de IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "Encaminha o tráfego que obteve correspondência para uma determinada porta de " "destino ou uma faixa de portas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" "Encaminha o tráfego que obteve correspondência deste IP ou uma faixa de IPs." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" "Encaminha o tráfego que obteve correspondência originado de uma determinada " "porta de origem ou faixa de portas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "Auxiliar de correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -"Casa o tráfego entrante direcionado para uma porta ou faixa de portas de " -"destino específica neste computador" +"Correspondência de tráfego de entrada direcionado à porta de destino ou " +"intervalo de portas especificado neste host" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "Marca de correspondência" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" "Corresponder o tráfego usando uma conexão definida pelo auxiliar de " "rastreamento." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" "Corresponder uma marca de firewall especifica ou uma variedade de diferentes " "marcas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" "Corresponda o tráfego encaminhado usando um dispositivo de rede de saída " "indicado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." -msgstr "" -"Casa o tráfego correspondente que esteja carregando uma marca DSCP " -"específica." +msgstr "Corresponde ao tráfego que carrega a marcação DSCP especificada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Total de registros" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Comprimento máximo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -689,22 +827,22 @@ msgstr "" "por um cada vez que o limite especificado acima não é atingido, até este " "número." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Segunda-Feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Dias do mês" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "Regras NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -712,27 +850,42 @@ msgstr "" "As regras da NAT permitem o controle fino sobre o IP de origem para usar com " "o tráfego de saída ou tráfego de encaminhamento." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Máscara de rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" +"Ela não é totalmente compatível com QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" "Somente case o tráfego entrante direcionado para o endereço IP fornecido." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Somente case o tráfego entrante destes endereços MAC." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Somente case o tráfego entrante desta faixa de endereços IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -740,27 +893,44 @@ msgstr "" "Somente case o tráfego entrante vindo da porta de origem fornecida ou " "intervalo de portas no equipamento cliente" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "Dispositivo de saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Zona de saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Saída" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Campo do pacote coincidente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Campos do pacote que correspondem.
Sintaxe: direction_datatype. por exemplo: src_port, dest_net.
Modo de preparo: " +"src, dst. Tipos de dados: ip, port, mac, net, set. " +"
Os prefixos de direção são opcionais.
*Nota: o tipo de dados " +"set não é suportado no fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "Passa argumentos adicionais para o iptables. Use com cuidado!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -774,12 +944,16 @@ msgstr "" "extremo cuidado, pois valores inválidos podem quebrar todo o conjunto de " "regras do firewall expondo todos os serviços completamente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Caminho para o arquivo de CIDRs, sub-redes, IPs de host, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Encaminhamentos de Porta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -787,76 +961,90 @@ msgstr "" "O encaminhamento de portas permite que computadores remotos na Internet " "conectem a um computador ou serviço específico dentro da rede local privada." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Faixa de portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protocolo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Redireciona tráfego entrante para a porta especificada no computador interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Redireciona tráfego entrante para o computador interno especificado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "Requer suporte de NAT em hardware. Implementado ao menos para mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consulte o conjunto externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zonas de reflexão" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Requer suporte de NAT em hardware." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Restringe o mascaramento para uma subrede de destino específica" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Restringe o mascaramento para uma subrede de origem específica" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "Restringe para uma família de endereços" +msgstr "Restringe à uma família de endereços" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "Reescreva o endereço IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" "Reescreva o tráfego compatível com o endereço IP de origem especificado." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "Reescrever tráfego compatível com a porta de origem especificado ou uma " "faixa de portas." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Reescrever porta" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "Aceleração de Roteamento/NAT" +msgstr "Aceleração do roteamento/NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - Reescrever para um IP de origem ou uma porta específica" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Sábado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "Definir marca" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -865,40 +1053,40 @@ msgstr "" "mask]. Se uma máscara for especificada, então apenas os bits definidos na " "máscara são modificados." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Aceleração de roteamento/NAT baseada em Software" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "Aceleração de fluxo de dados via Software" +msgstr "Aceleração do fluxo dos dados via software" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Endereço IP de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Endereço MAC de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Endereço de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Porta de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zona de origem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -906,7 +1094,7 @@ msgstr "" "Especifica se esta regra de tráfego deve ser ligada a um dispositivo de rede " "específico de entrada ou de saída." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -914,32 +1102,36 @@ msgstr "" "Especifica se deve usar o endereço de IP externo ou interno para o tráfego " "refletido." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Dia inicial (aaaa-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Hora de Início (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Hora de Início (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Dia final (aaaa-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Hora de Parada (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Hora de Parada (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Método de armazenamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Domingo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." @@ -947,7 +1139,7 @@ msgstr "" "A configuração de firewall existente precisa ser alterada para que o LuCI " "funcione corretamente." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -955,8 +1147,8 @@ msgstr "" "O firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " "tráfego de rede." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -972,7 +1164,7 @@ msgstr "" "encaminhamento é unidirecional, ex: um encaminhamento da LAN para " "WAN não implica na permissão de encaminhar da WAN para LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -987,22 +1179,30 @@ msgstr "" "Redes Cobertas especificam que redes disponíveis são membros desta " "zona." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Quita-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Restrições de tempo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Hora em UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "As restrições de tempo estão ativadas para esta regra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tempo limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item.ival}
}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" "Para %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"var>}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -"Para %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"Para %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "Auxiliar de rastreamento" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Regras de tráfego" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Regras de tráfego definem políticas para a passagem de pacotes entre as " "diferentes zonas. Por exemplo, rejeitar o tráfego entre certos equipamentos " "ou abrir portas WAN no roteador." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Terça-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Não foi possível salvar os conteúdos: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unidade: segundos. Padrão 0 significa que a entrada é " +"adicionada permanentemente ao conjunto.
Max: 2147483 segundos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "Auxiliar conntrack desconhecido ou não instalado \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "NAT sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Encaminhamento sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Regra sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Conjunto sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Zona sem nome" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "Protocolo desconhecido" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " @@ -1108,15 +1320,21 @@ msgstr "" "serão convertidas para seções \"nat\" e o firewall será reiniciado para " "aplicar e atualizar as novas configurações." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Usar endereço IP externo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Usar endereço IP interno" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Use o ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1124,7 +1342,7 @@ msgstr "" "Use esta opção para classificar o tráfego bruto da zona por dispositivos de " "rede não gerenciados pelauci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1132,436 +1350,326 @@ msgstr "" "Use esta opção para classificar o tráfego da zona por sub-rede de origem ou " "destino em vez de redes ou dispositivos." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "Marca de firewall válida necessária" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Quarta-feira" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Dias da semana" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "Marca de firewall XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "Marca XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "O seu dispositivo não roda o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "O seu dispositivo roda o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Zona ⇒ Encaminhamentos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zonas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonas de onde devem ser criadas regras de reflexão. Se não for definido, " +"apenas a zona de destino é usada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "aceitar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "qualquer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "qualquer zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "qualquer/tudo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "aplicar marca de firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "atribuir auxiliar conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automático" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap é ipv4 apenas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "dia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: endereço MAC de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (sub)rede de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destino ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "não reescrever" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "não rastrear" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "descartar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 oferece suporte a referência e criação de conjuntos de IPs para " +"simplificar a correspondência de grandes listas de endereços sem a " +"necessidade de criar uma regra que coincida com cada item. Os intervalos das " +"portas em ipsets não são compatíveis com o firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "deporta-paraporta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "hora" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Endereço IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Para uso com tipos de dados que coincidam: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "minuto" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "rede: (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "porta: Porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "rejeitar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "segundo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Origem do ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Origem do endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Origem (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "este dispositivo" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "esta nova zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "ilimitado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "não especificado" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "até 65536 entradas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "marca de firewall válida" -#~ msgid "%s in %s" -#~ msgstr "%s in %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s com %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s em %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d pcts. por %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d pcts. por %s, pico %d pcts." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s e limite a %s" - -#~ msgid "Accept forward" -#~ msgstr "Aceitar encaminhamento" - -#~ msgid "Accept input" -#~ msgstr "Aceitar entrada" - -#~ msgid "Accept output" -#~ msgstr "Aceitar saída" - -#~ msgid "Destination IP address" -#~ msgstr "Endereço IP de destino" - -#~ msgid "Discard forward" -#~ msgstr "Descartar o encaminhamento" - -#~ msgid "Discard input" -#~ msgstr "Descartar a entrada" - -#~ msgid "Discard output" -#~ msgstr "Descartar a saída" - -#~ msgid "Do not rewrite" -#~ msgstr "Não sobrescreva" - -#~ msgid "Do not track forward" -#~ msgstr "Não rastrear o encaminhamento" - -#~ msgid "Do not track input" -#~ msgstr "Não rastrear a entrada" - -#~ msgid "Do not track output" -#~ msgstr "Não rastrear a saída" - -#~ msgid "Forward to" -#~ msgstr "Encaminhar para" - -#~ msgid "From %s in %s" -#~ msgstr "Vindo de %s em %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Vindo de %s em %s com origem %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Vindo de %s em %s com origem %s e %s" - -#~ msgid "From %s on this device" -#~ msgstr "De %s neste dispositivo" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "De %s neste dispositivo com origem %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "De %s neste dispositivo com origem %s e %s" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "Faixa IP" - -#~ msgid "IPs" -#~ msgstr "IPs" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MACs" - -#~ msgid "Network" -#~ msgstr "Rede" - -#~ msgid "Refuse forward" -#~ msgstr "Recusar encaminhamento" - -#~ msgid "Refuse input" -#~ msgstr "Recusar entrada" - -#~ msgid "Refuse output" -#~ msgstr "Recusar saída" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Para %s em %s neste dispositivo" - -#~ msgid "To %s in %s" -#~ msgstr "Para %s em %s" - -#~ msgid "To %s on this device" -#~ msgstr "Para %s neste dispositivo" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Para %s, %s em %s" - -#~ msgid "Via %s" -#~ msgstr "Via %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Através do %s na %s" - -#~ msgid "any host" -#~ msgstr "qualquer equipamento" - -#~ msgid "any router IP" -#~ msgstr "qualquer endereço IP do roteador" - -#~ msgid "not" -#~ msgstr "não" - -#~ msgid "port" -#~ msgstr "porta" - -#~ msgid "ports" -#~ msgstr "portas" - -#~ msgid "type" -#~ msgstr "tipo" - -#~ msgid "types" -#~ msgstr "tipos" - -#~ msgid "Force connection tracking" -#~ msgstr "Force o rastreamento da conexão" - -#~ msgid "Disable" -#~ msgstr "Desabilitar" - -#~ msgid "Restart Firewall" -#~ msgstr "Reiniciar o Firewall" - -#~ msgid "Rule is disabled" -#~ msgstr "A regra está desabilitada" - -#~ msgid "Rule is enabled" -#~ msgstr "A regra está habilitada" - -#~ msgid "Add" -#~ msgstr "Adicionar" - -#~ msgid "Add and edit..." -#~ msgstr "Adicionar e editar..." - -#~ msgid "External zone" -#~ msgstr "Zona externa" - -#~ msgid "New SNAT rule" -#~ msgstr "Nova regra de SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Nova regra de encaminhamento" - -#~ msgid "New input rule" -#~ msgstr "Nova regra de entrada" - -#~ msgid "New port forward" -#~ msgstr "Novo encaminhamento de porta" - -#~ msgid "New source NAT" -#~ msgstr "Nova origem NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Abrir portas no roteador" - -#~ msgid "Other..." -#~ msgstr "Outro..." - -#~ msgid "To source IP" -#~ msgstr "Para o endereço IP de origem" - -#~ msgid "To source port" -#~ msgstr "Para a porta de origem" - -#~ msgid "Output zone" -#~ msgstr "Zona de saída" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Entrada Sem Nome)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Regra Sem Nome)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(SNAT Sem Nome)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Encaminhamento entre Zonas" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "" -#~ "Casa o tráfego encaminhado para uma porta ou faixa de portas de destino " -#~ "específica." +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Aceleração do roteamento/NAT via software" #~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Casa o tráfego entrante originado de uma porta ou faixa de portas no " -#~ "equipamento cliente." - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "Reescreva o tráfego correspondente para o endereço fornecido." +#~ "Ative o endereço de rede e a conversão da porta (NAT ou NAPT) para o " +#~ "tráfego de saída nesta zona. Normalmente, isso é ativado na zona wan." #~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "Reescreva o tráfego correspondente para a porta de origem fornecida. Pode " -#~ "ficar em branco para somente reescrever o endereço IP." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Reescrever para a origem %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "Reescrever para a origem %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "Endereço IP da SNAT" - -#~ msgid "SNAT port" -#~ msgstr "Porta da SNAT" - -#~ msgid "Source NAT" -#~ msgstr "NAT origem" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" #~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" #~ msgstr "" -#~ "NAT origem é uma forma específica de mascaramento que permite o controle " -#~ "fino do endereço IP de origem usado no tráfego sainte. Por exemplo, para " -#~ "mapear múltiplos endereços WAN para subredes internas." - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "Hora inicial (hh:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "Hora final (hh:mm:ss)" - -#~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "" -#~ "Esta página permite que você mude propriedades avançadas da entrada do " -#~ "encaminhamento de porta. Na maioria dos casos, não é necessário modificar " -#~ "estas configurações." - -#~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "" -#~ "Esta página permite que você mude propriedades avançadas da entrada da " -#~ "regra de tráfego, como os equipamentos de origem e destino." - -#~ msgid "Unnamed SNAT" -#~ msgstr "SNAT sem nome" - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "" -#~ "Você pode especificar múltiplas entradas selecionando \"-- personalizado " -#~ "--\" e então entrando os protocolos separados por espaço." - -#~ msgid "Zone %q" -#~ msgstr "Zona %q" - -# 20140621: edersg: tradução -#~ msgid "traffic" -#~ msgstr "tráfego" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/ro/firewall.po b/luci-app-firewall/po/ro/firewall.po index 8fa1ff30a..85c9416d3 100644 --- a/luci-app-firewall/po/ro/firewall.po +++ b/luci-app-firewall/po/ro/firewall.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2020-03-29 12:19+0000\n" -"Last-Translator: Cristian Ionescu \n" +"PO-Revision-Date: 2023-09-18 15:45+0000\n" +"Last-Translator: David Rapaň \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -11,357 +11,479 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 5.0.2\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 și " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP cu tipuri %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- adăugați IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" -msgstr "" +msgstr "-- adăugați MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"Acceptă %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "" +msgstr "Preveniți rescrierea sursei" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"Forward la %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Picătură %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"Assign DSCP clasificare %{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"Assign conntrack ajutător " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"%{set_mark?Assign:XOR} marcaj firewall " +"%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Automat rescrieți automat sursa IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Nu urmăriți %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"Rejectare %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"Statically rewrite la sursă %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "Trebuie specificat un IP de rescriere!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "ACCEPT - Dezactivează rescrierea adreselor" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" -msgstr "Actiune" +msgstr "Acțiune" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" +"Argumente brute suplimentare iptables pentru a clasifica traficul " +"de destinație al zonei, de exemplu, -p tcp --dport 443 pentru a " +"se potrivi numai cu traficul HTTPS de ieșire." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" +"Argumente brute suplimentare iptables pentru a clasifica traficul " +"sursă din zonă, de exemplu, -p tcp --sport 443 pentru a se " +"potrivi numai cu traficul HTTPS de intrare." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Familia de adrese, adresa IP internă trebuie să corespundă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "Familia de adrese, adresa IP internă trebuie să corespundă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Setări avansate" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "Permiteți traficul \"invalid\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "Permite trecerea din zonele sursa." +msgstr "Permite trecerea din zonele sursa:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" -msgstr "Permite trecerea catre zonele sursa." +msgstr "Permite trecerea catre zonele sursa:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Oricare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Orice zi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" +"Aplică un XOR în sensul biometric al valorii date și al valorii mărcii " +"existente pe conexiunile stabilite. Formatul este value[/mask]. Dacă se " +"specifică o mască, atunci acei biți setați în mască sunt eliminați." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." -msgstr "" +msgstr "Aplică clasa sau valoarea DSCP dată la conexiunile stabilite." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" +"Alocarea ajutorului de urmărire a conexiunilor specificat pentru traficul " +"corespunzător." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" -msgstr "" +msgstr "Atribuirea automată a ajutorului" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" +"Atribuiți automat ajutoare de conntrack pe baza protocolului și portului de " +"trafic" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentariu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "" +msgstr "Setări Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "" +msgstr "Ajutoarele Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Conţinutul a fost salvat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" -msgstr "" +msgstr "Continuați" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contoare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "Dispozitive acoperite" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Retele acoperite" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "Subrețele acoperite" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Reguli suplimentare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" +"Regulile personalizate vă permit să executați comenzi iptables arbitrare " +"care nu sunt altfel acoperite de cadrul firewall. Comenzile sunt executate " +"după fiecare repornire a firewall-ului, imediat după ce setul de reguli " +"implicite a fost încărcat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "" +msgstr "Clasificarea DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "Marcaj DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "" +msgstr "Marcaj DSCP necesar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "Destinaţie adresă" +msgstr "Adresa de destinație" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "Portul destinatie" +msgstr "Portul de destinație" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Zonă de destinație" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Numele dispozitivului" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" +"Nu instalați reguli suplimentare pentru a respinge traficul redirecționat cu " +"starea conntrack invalid. Acest lucru poate fi necesar pentru " +"configurații complexe de rute asimetrice." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Descarcă pachetele invalide" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Activează" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Activează loopback NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Activează protecţia SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Activeaza log in aceasta zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 -msgid "Expecting: %s" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." msgstr "" +"Activați adresa de rețea și traducerea portului IPv4 (NAT4 sau NAPT4) pentru " +"traficul de ieșire din această zonă. Acest lucru este de obicei activat pe " +"wan zone." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Funcție experimentală. Nu este complet compatibiă cu QoS/SQM." +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Activați adresa de rețea și traducerea porturilor IPv6 (NAT6 sau NAPT6) " +"pentru traficul de ieșire din această zonă." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "activat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Activează urmărirea numărului de pachete și de octeți pentru set." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Se așteaptă: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" +"Alege în mod explicit ajutoarele de urmărire a conexiunilor permise pentru " +"traficul din zonă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Adresă IP externă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Port extern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" -msgstr "" +msgstr "Argumente suplimentare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" -msgstr "" +msgstr "Argumente suplimentare pentru destinație" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "" +msgstr "Argumente suplimentare pentru iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" -msgstr "" +msgstr "Argumente sursă suplimentare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Firewall - Reguli particularizate" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 -msgid "Firewall - NAT Rules" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Seturi IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Reguli NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Firewall - Port-uri forwardate" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Firewall - Reguli ale traficului" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Setari zona la firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Migrarea configurației firewall-ului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "Forward" +msgstr "redirecționare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" +"Redirecționate %{ipv6?%{ipv4?IPv4 și IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}" +"}}%{mark?, mark %{mark.val}" +"}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Vineri" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"De la %{src}%{src_dispozitiv?, interfață %{src_dispozitiv}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}" +"}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" +"De la %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" +"De la %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "Setări generale" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Acordarea accesului la configurația firewall-ului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" -msgstr "" +msgstr "Descărcarea fluxului hardware" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (interval)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Seturi IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-uri/Rețele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-uri/Rețele/MAC-uri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" -msgstr "IPv4 şi IPv6" +msgstr "IPv4 și IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "doar IPv4" +msgstr "Doar IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascare IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "doar IPv6" +msgstr "Doar IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" -msgstr "" +msgstr "Dispozitiv de intrare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Includere fișier" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" +"Intrări %{ipv6?%{ipv4?IPv4 și IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Dimensiunea inițială a hash-ului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Intrare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Adresa IP interna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Port intern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Zonă internă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "Marcaj DSCP invalid" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" +msgstr "Valoare limită invalidă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" -msgstr "" +msgstr "Limitați explozia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Limitează mesaje în log" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" -msgstr "" +msgstr "Potrivirea limitelor" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" +"Limitați potrivirea la %{limit.num} pachete pe %{limit.unit}" +"%{limit.burst? burst %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Activarea limitată a mascării" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "" +msgstr "Limitează potrivirea traficului la rata specificată." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "" +msgstr "IP sursă Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "" +msgstr "MASQUERADE - Rescrierea automată către IP-ul interfeței de ieșire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Ajustare MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Translatare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Potrivire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "" +msgstr "Potrivire DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Potriveste pe tipul de ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "" +msgstr "Dispozitiv de potrivire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." -msgstr "" +msgstr "Potrivește traficul redirecționat către adresa IP dată." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" +"Potrivește traficul redirecționat către portul de destinație sau intervalul " +"de porturi dat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." -msgstr "" +msgstr "Potrivește traficul redirecționat de la acest IP sau interval." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" +"Potrivește traficul redirecționat care provine din portul sursă sau din " +"intervalul de porturi dat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "" +msgstr "Ajutor de potrivire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 -msgid "Match mark" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 -msgid "Match traffic using the specified connection tracking helper." -msgstr "" +"Potrivește traficul de intrare direcționat către portul de destinație sau " +"intervalul de porturi dat pe această gazdă" #: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Marca de meci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Potrivește traficul care utilizează ajutorul de urmărire a conexiunilor " +"specificat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" +"Se potrivește cu o anumită marcă de firewall sau cu o serie de mărci " +"diferite." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" +"Potrivește traficul redirecționat utilizând dispozitivul de rețea de ieșire " +"specificat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." -msgstr "" +msgstr "Potrivește traficul care poartă marcajul DSCP specificat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Intrări max" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Lungime maximă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" +"Numărul maxim inițial de pachete care trebuie să se potrivească: acest număr " +"se reîncarcă cu unu de fiecare dată când limita specificată mai sus nu este " +"atinsă, până la acest număr." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Luni" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" -msgstr "" +msgstr "Luna Zile" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "Reguli NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" +"Regulile NAT permit un control fin asupra IP-ului sursă care va fi utilizat " +"pentru traficul de ieșire sau de redirecționare." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Nume" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Mască de rețea" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nu este complet compatibiă cu QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" +"Se potrivește numai cu traficul de intrare direcționat către adresa IP dată." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." -msgstr "" +msgstr "Potriviți numai traficul de intrare de la aceste MAC-uri." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" +"Se potrivește numai cu traficul de intrare de la acest IP sau interval." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" +"Se potrivește numai cu traficul de intrare care provine din portul sursă dat " +"sau din intervalul de porturi de pe gazda clientului" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "" +msgstr "Dispozitiv de ieșire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" -msgstr "" +msgstr "Zona de ieșire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Ieşire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Potrivire câmp pachete" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Câmpurile pachetului care se potrivesc.
Sintaxa: " +"direction_datatype. de exemplu: src_port, dest_net." +"
Direcții: src, dst. Tipuri de date: ip, port, mac, " +"net, set.
. Prefixele de direcție sunt opționale.
*Nota: " +"tipul de date set nu este acceptat în fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Transmite argumente suplimentare către iptables. Folosiți cu grijă!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -651,173 +931,221 @@ msgid "" "invalid values could render the firewall ruleset broken, completely exposing " "all services." msgstr "" +"Transmiterea argumentelor iptables brute către regulile de clasificare a " +"traficului la sursă și la destinație permite potrivirea pachetelor pe baza " +"altor criterii decât interfețele sau subrețelele. Aceste opțiuni trebuie " +"utilizate cu mare atenție, deoarece valorile invalide ar putea face ca setul " +"de reguli de firewall să fie rupt, expunând complet toate serviciile." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 -msgid "Port Forwards" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" msgstr "" +"Calea de acces la fișierul cu CIDR-uri, subrețele, IP-uri gazdă etc.
" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Redirecționări" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" +"Redirecționarea porturilor permite computerelor de la distanță de pe " +"internet să se conecteze la un anumit computer sau serviciu din cadrul unei " +"rețele locale private." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "interval de porturi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protocol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" +"Redirecționează traficul de intrare corespunzător către portul dat pe gazda " +"internă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" +"Redirecționează traficul de intrare corespunzător către gazda internă " +"specificată" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consultați Setul extern" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zone de reflexie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Necesită suport hardware NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" -msgstr "" +msgstr "Restrângerea masquerading-ului la anumite subrețele de destinație" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" -msgstr "" +msgstr "Restrângerea masquerading-ului la anumite subrețele sursă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "" +msgstr "Restricționarea la adresa familiei" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "Rescrieți adresa IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." -msgstr "" +msgstr "Răspândește traficul potrivit la adresa IP sursă specificată." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" +"Rescrie traficul potrivit către portul sursă sau intervalul de porturi " +"specificat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Port de rescriere" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "" +msgstr "Rutarea/încărcarea NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Rescrierea către un anumit IP sau port sursă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Sâmbătă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "" +msgstr "Marca de setare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" +"Stabilește valoarea dată a marcajului la conexiunile stabilite. Formatul " +"este value[/mask]. Dacă este specificată o mască, atunci sunt modificați " +"numai acei biți setați în mască." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "" +msgstr "Descărcarea fluxului de software" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Sursă adresă IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "Sursă adresă MAC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" -msgstr "Adresa sursa" +msgstr "Adresă sursă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" -msgstr "Port sursa" +msgstr "Port sursă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Zona sursa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" +"Specifică dacă se leagă această regulă de trafic de un anumit dispozitiv de " +"intrare sau de ieșire din rețea." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" +"Specifică dacă se utilizează adresa IP externă sau internă pentru traficul " +"reflectat." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" -msgstr "" +msgstr "Data de începere (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Ora de începere (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" -msgstr "" +msgstr "Data de oprire (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Timp de oprire (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Metoda de stocare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Duminică" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"Configurația existentă a firewall-ului trebuie să fie modificată pentru ca " +"LuCI să funcționeze corect." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" +"Firewall-ul creează zone peste interfețele de rețea pentru a controla fluxul " +"de trafic de rețea." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -826,8 +1154,15 @@ msgid "" "rule is unidirectional, e.g. a forward from lan to wan does " "not imply a permission to forward from wan to lan as well." msgstr "" +"Opțiunile de mai jos controlează politicile de redirecționare între această " +"zonă (%s) și alte zone. Zonele de destinație acoperă traficul " +"redirecționat provenit din %q. Zonele sursă se " +"potrivesc cu traficul redirecționat din alte zone destinate la %q. Regula de redirecționare este unidirecțională, de exemplu, " +"o redirecționare de la lan la wan nu implicăo permisiune de " +"redirecționare de la wan la lan." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -835,23 +1170,37 @@ msgid "" "forwarded traffic between different networks within the zone. Covered " "networks specifies which available networks are members of this zone." msgstr "" +"Această secțiune definește proprietățile comune ale lui %q. Opțiunile " +"input și output stabilesc politicile implicite pentru " +"traficul care intră și iese din această zonă, în timp ce opțiunea " +"forward descrie politica pentru traficul redirecționat între " +"diferite rețele din cadrul zonei. Rețele acoperite specifică ce " +"rețele disponibile sunt membre ale acestei zone." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Joi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Restricţii de timp" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" -msgstr "" +msgstr "Timp în UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Restricțiile de timp sunt activate pentru această regulă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Pauză" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" +"Pentru %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" +"Pentru %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" +"Către %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" -msgstr "" +msgstr "Ajutor pentru urmărire" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" -msgstr "" +msgstr "Reguli de circulație" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" +"Regulile de trafic definesc politicile pentru pachetele care călătoresc " +"între diferite zone, de exemplu pentru a respinge traficul între anumite " +"gazde sau pentru a deschide porturile WAN pe router." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Marţi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" -msgstr "" +msgstr "Nu se poate salva conținutul: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unitate: secunde. Implicit 0 înseamnă că intrarea este adăugată " +"permanent la set.
Max: 2147483 secunde." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "" +msgstr "Ajutor conntrack necunoscut sau neinstalat \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "Fără nume NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" -msgstr "" +msgstr "Înainte fără nume" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" -msgstr "" +msgstr "Regula fără nume" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Set fără nume" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" -msgstr "" +msgstr "Zona fără nume" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Protocol nerecunoscut" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" +"La apăsarea butonului \"Continue\", secțiunile \"redirect\" cu țintă " +"\"SNAT\" vor fi convertite în secțiuni \"nat\", iar firewall-ul va fi " +"repornit pentru a aplica configurația actualizată." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Utilizați adresa IP externă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" -msgstr "" +msgstr "Utilizați adresa IP internă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Utilizați ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" +"Utilizați această opțiune pentru a clasifica traficul de zonă prin " +"dispozitive de rețea brute, neuci gestionate." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" +"Utilizați această opțiune pentru a clasifica traficul din zonă în funcție de " +"subnetul sursă sau destinație în loc de rețele sau dispozitive." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "" +msgstr "Este necesară o marcă de firewall validă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Miercuri" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" -msgstr "" +msgstr "Zilele săptămânii" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "" +msgstr "XOR marca firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" -msgstr "" +msgstr "Marcajul XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Dispozitivul nu rulează firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Dispozitivul rulează firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" -msgstr "" +msgstr "Zonă ⇒ Redirecționări" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 -msgid "accept" -msgstr "accept" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonele din care se creează reguli de reflecție. Dacă nu este setată, se " +"utilizează numai zona de destinație." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "acceptă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "oricare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "orice zona" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "orice/toate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" -msgstr "" +msgstr "aplică marcajul firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" -msgstr "" +msgstr "atribuirea ajutorului conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap este doar ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "zi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP-ul destinației" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Destinație adresa MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Destinație (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port:Destinatie port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destinație ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "" +msgstr "nu rescrieți" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "" +msgstr "nu urmăriți" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" -msgstr "" +msgstr "picătură" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 acceptă corelarea și crearea de seturi IP pentru a simplifica " +"potrivirea listelor de adrese mari, fără a fi nevoie să creați o regulă " +"pentru fiecare element pentru a se potrivi. Intervalele de porturi din " +"ipsets nu sunt acceptate de firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "de la port la port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "oră" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Adresă IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "IP[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Pentru utilizare cu tipurile de date Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "listă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Adresă MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "minut" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 -msgid "reject" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sub)net" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "respingeți" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "secundă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset *" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Sursa ipset *" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Adresă MAC sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (sub)rețea sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Port sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" -msgstr "" +msgstr "acest dispozitiv" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" -msgstr "" +msgstr "această nouă zonă" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "nelimitat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" -msgstr "" +msgstr "nespecificat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "până la 65536 intrări." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "" +msgstr "marca de firewall validă" -#~ msgid "%s in %s" -#~ msgstr "%s în %s" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Descărcarea bazată pe software pentru rutare/NAT" -#~ msgid "%s%s with %s" -#~ msgstr "%s%s cu %s" +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Activați traducerea adreselor de rețea și a porturilor (NAT sau NAPT) " +#~ "pentru traficul de ieșire din această zonă. Acest lucru este activat de " +#~ "obicei pe wan zonă." -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s în %s" +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Redirecționat IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" -#~ msgid "Destination IP address" -#~ msgstr "Destinaţie adresă IP" - -#~ msgid "Do not rewrite" -#~ msgstr "Nu rescrie" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "type" -#~ msgstr "tip" - -#~ msgid "Force connection tracking" -#~ msgstr "Forteaza urmarirea conexiunilor" - -#~ msgid "Add" -#~ msgstr "Adaugă" - -#~ msgid "Add and edit..." -#~ msgstr "Adaugă şi editează..." - -#~ msgid "External zone" -#~ msgstr "Zonă externă" - -#~ msgid "New SNAT rule" -#~ msgstr "Regulă nouă SNAT" - -#~ msgid "Other..." -#~ msgstr "Altele..." - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Intrare fără nume)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Regulă fără nume)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(SNAT fără nume)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "Forwardare intre-zone" - -#~ msgid "Source NAT" -#~ msgstr "Sursă NAT" - -#~ msgid "Zone %q" -#~ msgstr "Zona %q" +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Intrând IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/ru/firewall.po b/luci-app-firewall/po/ru/firewall.po index 59e3a75d8..b5330629f 100644 --- a/luci-app-firewall/po/ru/firewall.po +++ b/luci-app-firewall/po/ru/firewall.po @@ -2,31 +2,31 @@ msgid "" msgstr "" "Project-Id-Version: LuCI: firewall\n" "POT-Creation-Date: 2013-09-05 16:02+0200\n" -"PO-Revision-Date: 2020-02-12 11:00+0000\n" -"Last-Translator: Alex Ky \n" +"PO-Revision-Date: 2024-10-30 02:45+0000\n" +"Last-Translator: sergio \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.11-dev\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.8.2-dev\n" "Project-Info: Это технический перевод, не дословный. Главное-удобный русский " "интерфейс, все проверялось в графическом режиме, совместим с другими apps\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." @@ -35,83 +35,92 @@ msgstr "" "%{src?%{dest?Перенаправление:Входящий}:Исходящий} %{ipv6?%{ipv4?IPv4 и IPv6:IPv6}:IPv4}%{proto?, протокол " "%{proto#%{next?, }%{item.types?%{item." -"name}ICMP с типами %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, метка ICMP с типами %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, метка " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" -"%{dscp.val}}}%{helper?, помощник %{helper.inv?%{helper." -"val}:%{helper.val}}}" +"классификатора кроме {dscp.num?:%{dscp.name}}\">%{dscp.val}:" +"%{dscp.val}}}%{helper?, помощник %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- добавить IP-адрес --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- добавить MAC-адрес --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "Разрешить %{src?%{dest?перенаправляемый:" "входящий}:исходящий} трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "Предотвращать перезапись источника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" "Перенаправлять на %{dest}%{dest_ip? IP-" "адрес %{dest_ip}}%{dest_port? порт %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" "Отбрасывать %{src?%{dest?перенаправляемый:" "входящий}:исходящий} трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -"Назначить DSCP классификатор " -"%{set_dscp}" +"Назначить DSCP классификатор " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" "Назначить помощника отслеживания " "соединений %{set_helper}" "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" "%{set_mark?Назначить метку:XOR метки} " "брандмауэра %{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" "Автоматически перезаписывать IP-адрес " "источника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" @@ -119,39 +128,39 @@ msgstr "" "Не отслеживать %{src?%{dest?" "перенаправляемый:входящий}:исходящий} трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" "Отклонять %{src?%{dest?перенаправляемый:" "входящий}:исходящий} трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" "Статически переписывать %{snat_ip?IP-адрес " -"источника на %{snat_ip}} %{snat_port?порт источника на " -"%{snat_port}}" +"источника на %{snat_ip}} %{snat_port?порт источника на " +"%{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "IP-адрес для перезаписи должен быть указан!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ACCEPT — отключить перезапись адреса" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Действие" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -159,48 +168,58 @@ msgid "" msgstr "" "Дополнительные аргументы iptables для классификации трафика зоны " "назначения, например -p tcp --dport 443 для соответствия только " -"исходящему HTTPS трафику." +"исходящему HTTPS-трафику." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" "Дополнительные аргументы iptables для классификации трафика зоны " "источника, например -p tcp --sport 443 для соответствия только " -"входящему HTTPS трафику." +"входящему HTTPS-трафику." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Внутренний IP-адрес должен соответствовать выбранной версии IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Дополнительные настройки" +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "Адреса источника, назначения и перезаписи должны быть одной версии IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Расширеные настройки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "Разрешить «недействительный» трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Разрешить перенаправление из 'зон источников':" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Разрешить перенаправление в 'зоны назначения':" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Любой" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Любой день" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -210,61 +229,70 @@ msgstr "" "метки для уже установленных соединений. Формат — значение[/маска]. Если " "задана маска, то биты, заданные в маске, обнуляются." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" "Применить заданный класс DSCP или значение к установленным соединениям." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" "Назначить указанного помощника отслеживания соединений для соответствующего " "трафика." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Автоматическое назначение помощников" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" "Автоматическое назначение помощников отслеживания соединений (conntrack) на " "основе протокола и порта трафика" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Комментарий" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "Отслеживание соединений (conntrack)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "Помощники отслеживания соединений" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Содержимое сохранено." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Продолжить" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Счетчики" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Охватываемые устройства" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Охватываемые сети" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Охватываемые подсети" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Пользовательские правила" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -275,37 +303,37 @@ msgstr "" "каждой перезагрузки межсетевого экрана, сразу после загрузки набора правил " "по умолчанию." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "DSCP классификация" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "DSCP метка" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "Требуется DSCP метка" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Адрес назначения" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Порт назначения" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Зона назначения" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Имя устройства" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -314,120 +342,155 @@ msgstr "" "трафика с состоянием недействительный (invalid). Это может " "потребоваться для сложных настроек асимметричной маршрутизации." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Отбрасывать некорректные пакеты" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Включить" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Включить NAT Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Включить защиту от SYN-flood атак" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Включить журналирование в этой зоне" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Включите трансляцию сетевых адресов и портов IPv4 (NAT4 или NAPT4) для " +"исходящего трафика в этой зоне. Обычно это включается в зоне wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Включите трансляцию сетевых адресов и портов IPv6 (NAT6 или NAPT6) для " +"исходящего трафика в этой зоне." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Включен" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Включает отслеживание количества пакетов и байтов для набора." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "Ожидается: %s" +msgstr "Ожидание: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Экспериментальный функционал. Не полностью совместим с QoS/SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" "Явно определяет допустимые варианты помощников (helpers) отслеживания " "соединений (connection tracking) трафика в зоне" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Внешний IP-адрес" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Внешний порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Дополнительные аргументы" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Дополнительные аргументы для назначения" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Дополнительные аргументы iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Дополнительные аргументы для источника" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Семейство" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Межсетевой экран" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Межсетевой экран - Пользовательские правила" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Брандмауэр - наборы IP-адресов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Межсетевой экран - Правила NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Межсетевой экран - Перенаправление портов" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Межсетевой экран - Правила для трафика" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Межсетевой экран - Настройка зон" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "Миграция конфигурации межсетевого экрана" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Тип разгрузки потока" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Перенаправление" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -"Перенаправление IPv4%{proto?, протокол %{proto#%{next?, }%{item.name}}}%{mark?, метка %{mark.val}}" +"Перенаправление %{ipv6?%{ipv4?IPv4 и IPv6:IPv6}:IPv4}%{proto?, протокол %{proto#%{next?, }%{item.name}" +"}}%{mark?, пометка %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Пятница" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " "%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адрес %{src_mac#" -"%{next?, }%{item.ival}}}" +"кроме %{item.val}.\"}>%{item.ival}}}%{src_mac?, MAC-адрес " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -"Из %{src}%{src_ip?, IP-адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " -"MAC-адрес %{src_mac#%{next?, }%{item.ival}}}" +"Из %{src}%{src_ip?, IP-адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адрес %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Основные настройки" +msgstr "Основные Настройки" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Разрешить конфигурировать брандмауер" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Аппаратная разгрузка для маршрутизации с/без NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" -msgstr "Аппаратный flow offloading" +msgstr "Аппаратная разгрузка потока" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (диапазон)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Наборы IP-адресов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-адреса/сети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-адреса/сети/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 и IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Только IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Маскарадинг IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Только IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Входящее устройство" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" -"Входящий IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP с " -"типами %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, метка %{mark.val}}%{helper?, помощник %{helper.inv?" -"%{helper.val}:%{helper." -"val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Файл включения" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Входящий %{ipv6?%{ipv4?IPv4 и IPv6:IPv6}:" +"IPv4}%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"с типами %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, пометка %{mark.val}}%{helper?, помощник %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Начальный размер хэша" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Входящий трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Внутренний IP-адрес" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Внутренний порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Внутренняя зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Внутризональная пересылка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Неверная DSCP метка" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Неверное значение ограничения" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Недопустимое имя набора" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Ограничение барста (burst)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Ограничить журнал сообщений" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Соответствие по ограничениям" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -"Ограничение до %{limit.num} пакетов в %{limit.unit}" -"%{limit.burst? барст (burst) %{limit.burst}}" +"Ограничение до %{limit.num} пакетов в %{limit.unit}%{limit.burst? барст (burst) %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Включены ограничения маскарадинга" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "Ограничивает сопоставление трафика указанной скорости." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "IP-адрес источника петли (Loopback)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" "MASQUERADE — автоматически переписывать на IP-адрес исходящего интерфейса" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Ограничение MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Маскарадинг" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Соответствие" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "Соответствие DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Соответствие ICMP типу" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "Соответствие устройству" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" "Соответствие перенаправляемого трафика, направленного на заданный IP-адрес." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "Соответствие перенаправляемого трафика, направленного на заданный порт " "назначения или диапазон портов." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" "Соответствие перенаправляемого трафика от данного IP-адреса или диапазона." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" "Соответствие перенаправляемого трафика, исходящего от заданного порта " "источника или диапазона портов." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "Соответствие помощнику" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -657,32 +787,40 @@ msgstr "" "Порт или диапазон портов, входящие подключения на который будут " "перенаправляться на внутренний порт внутреннего IP-адреса (см. ниже)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "Соответствие метки" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" "Сопоставление трафика с помощью указанного помощника отслеживания соединений." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" "Соответствие определённой метке брандмауэра или диапазона различных меток." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" "Соответствие перенаправляемого трафика, использующего указанное исходящее " "сетевое устройство." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "Сопоставляет трафик с указанной DSCP-маркировкой." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Максимальное количество записей" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Максимальная длина" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -691,22 +829,22 @@ msgstr "" "пополняться на один каждый раз, когда лимит, указанный выше, не будет " "достигнут, вплоть до этого числа." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Понедельник" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Дни месяца" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "Правила NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -714,29 +852,43 @@ msgstr "" "Правила NAT позволяют точно контролировать IP-адрес источника в исходящем " "или перенаправляемом трафике." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" -msgstr "Имя" +msgstr "Название" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Маска сети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Отсутствует" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Не полностью совместим с QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" "Применять правило только для входящих подключений на указанный IP-адрес." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Применять правило только для входящего трафика от этих MAC-адресов." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" "Применять правило только для входящего трафика от этого IP-адреса или " "диапазона адресов." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -744,29 +896,46 @@ msgstr "" "Применять правило только для входящего трафика от указанного порта или " "диапазона портов клиентского хоста" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "Исходящее устройство" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Исходящая зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Исходящий трафик" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Соответствие поля пакета" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Поля пакета для сопоставления.
Синтаксис: direction_datatype. " +"например: src_port, dest_net.
Направления: src, dst. Типы данных: ip, port, mac, net, set.
Префиксы " +"направления необязательны.
*Примечание: тип данных set не " +"поддерживается в fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" "Передаёт дополнительные аргументы таблице iptables. Используйте с " "осторожностью!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -780,12 +949,16 @@ msgstr "" "осторожностью, так как неверные значения могут привести к нарушению работы " "правил межсетевого экрана, полностью открывая доступ ко всем службам системы." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Путь к файлу с CIDR, подсетями, IP-адресами хостов и т.д.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Перенаправление портов" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -793,77 +966,90 @@ msgstr "" "Перенаправленные портов позволяет удалённым компьютерам из Интернета " "соединяться с компьютером или службой внутри частной локальной сети." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Диапазон портов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Протокол" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Перенаправлять трафик на указанный порт или диапазон портов внутреннего IP-" "адреса" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Перенаправлять трафик на указанный IP-адрес" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" -"Требуется аппаратная поддержка NAT. Реализовано, по крайней мере, для mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Обращение к внешнему набору" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Зоны отражения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Требуется аппаратная поддержка NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Использовать маскарадинг только для указанных подсетей-получателей" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Использовать маскарадинг только для указанных подсетей-отправителей" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Использовать протокол" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "IP-адрес для перезаписи" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "Перезаписать соответствующий трафик на указанный IP-адрес источника." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "Перезаписать соответствующий трафик на указанный порт источника или диапазон " "портов." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Порт для перезаписи" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "Маршрутизация/NAT offloading" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT — перезаписать на указанный IP-адрес источника или порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Суббота" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "Установить метку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -872,40 +1058,40 @@ msgstr "" "Если указана маска, то изменяются только те биты, которые установлены в " "маске." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Программная реализация offloading для маршрутизации/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Программная разгрузка для маршрутизации/NAT." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Программный flow offloading" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "IP-адрес источника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "MAC-адрес источника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Адрес источника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Порт источника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Зона источника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -913,7 +1099,7 @@ msgstr "" "Определяет, привязывать ли это правило трафика к конкретному входящему или " "исходящему сетевому устройству." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -921,32 +1107,36 @@ msgstr "" "Определяет, использовать внешний или внутренний IP-адрес для отраженного " "трафика." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Дата начала (год-мес-день)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "Время начала (чч.мм.сс)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Время начала (чч:мм:сс)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Дата окончания (год-мес-день)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "Время окончания (чч.мм.сс)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Время окончания (чч:мм:сс)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Метод хранения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Воскресенье" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." @@ -954,14 +1144,14 @@ msgstr "" "Для правильной работы LuCI необходимо изменить существующую конфигурацию " "межсетевого экрана." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "Межсетевой экран создает зоны в вашей сети для контроля трафика." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -978,7 +1168,7 @@ msgstr "" "перенаправление из lan в wan 'не' допускает перенаправление трафика " "из wan в lan." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -993,22 +1183,30 @@ msgstr "" "различными сетями внутри зоны. 'Использовать сети' указывает, какие " "доступные сети являются членами этой зоны." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Четверг" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Временные ограничения" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Время UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Для правила включены временные ограничения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Тайм-аут" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item.ival}
}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" "В %{dest}%{dest_device?, через интерфейс %{dest_device}}%{dest_ip?, IP-адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" +"var>}%{dest_ip?, IP-адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}
}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" "В %{dest}%{dest_ip?, IP-адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" +"var>}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "Помощник отслеживания" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Правила для трафика" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Правила для трафика определяют политику прохождения пакетов между разными " "зонами, например, запрет трафика между некоторыми хостами или открытие WAN-" "портов маршрутизатора." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Вторник" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Невозможно сохранить содержимое: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Единица измерения: секунды. По умолчанию 0 означает, что запись " +"постоянно добавляется в набор.
Максимум: 2147483 секунд." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "Неизвестный или не установленный помощник «‎%s»" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "NAT без имени" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Перенаправление без имени" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Правило без имени" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Безымянный набор" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Зона без имени" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "Нераспознанный протокол" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " @@ -1114,15 +1324,21 @@ msgstr "" "типа «SNAT» будут сконвертированы в разделы «nat» и межсетевой экран будет " "перезапущен для применения и обновления конфигурации." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Использовать внешний IP-адрес" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Использовать внутренний IP-адрес" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Использовать ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." @@ -1130,7 +1346,7 @@ msgstr "" "Используйте эту опцию для классификации трафика зоны по сетевым устройствам, " "управляемым не через uci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1138,375 +1354,325 @@ msgstr "" "Используйте эту опцию для классификации трафика зоны по источнику или " "подсети назначения вместо сети или устройств." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "Требуется верная метка брандмауэра" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Среда" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Дни недели" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "XOR метка брандмауэра" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "XOR метка" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "firewall4 не запущен на вашем устройстве." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "firewall4 запущен на вашем устройстве." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Зона ⇒ Перенаправления" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Зоны" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Зоны, из которых будут создаваться правила отражения. Если значение не " +"задано, то используется только зона назначения." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "принимать" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "любой" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "любая зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "любой/все" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "применить метку брандмауэра" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "назначить помощника отслеживания соединений" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "автоматически" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "битовая карта" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Битовая карта только для IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "день" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP-адрес назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: MAC-адрес назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Сеть назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Порт назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: ipset назначения*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "не перезаписывать" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "не отслеживать" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "не обрабатывать" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 поддерживает ссылки и создание наборов IP-адресов для упрощения " +"согласования больших списков адресов без необходимости создавать по одному " +"правилу на каждый элемент для согласования. Диапазоны портов в наборах " +"ипсетов не поддерживаются firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "портисточника-портназначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "хэш" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "час" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Для использования с типами данных Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "список" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "минута" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 -msgid "reject" -msgstr "отвергать" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: Сеть" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "порт: Порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "отклонить" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "секунда" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "набор: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Исходный ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: MAC-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (Под)сеть источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Исходный порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "это устройство" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "эта новая зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "без ограничений" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "не определено" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "до 65536 записей." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "верная метка брандмауэра" -#~ msgid "%s in %s" -#~ msgstr "%s в %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s с %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s в %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d пакетов за %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "" -#~ "%d пакетов за %s, подряд %d пакетов" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s с пределом в %s" - -#~ msgid "Accept forward" -#~ msgstr "Принимать перенаправляемый трафик" - -#~ msgid "Accept input" -#~ msgstr "Принимать входящий трафик" - -#~ msgid "Accept output" -#~ msgstr "Принимать исходящий трафик" - -#~ msgid "Destination IP address" -#~ msgstr "IP-адрес назначения" - -#~ msgid "Discard forward" -#~ msgstr "Отклонять перенаправляемый трафик" - -#~ msgid "Discard input" -#~ msgstr "Отклонять входящий трафик" - -#~ msgid "Discard output" -#~ msgstr "Отклонять исходящий трафик" - -#~ msgid "Do not rewrite" -#~ msgstr "Не перезаписывать" - -#~ msgid "Do not track forward" -#~ msgstr "Не отслеживать перенаправляемый трафик" - -#~ msgid "Do not track input" -#~ msgstr "Не отслеживать входящий трафик" - -#~ msgid "Do not track output" -#~ msgstr "Не отслеживать исходящий трафик" - -#~ msgid "Forward to" -#~ msgstr "Перенаправлять на" - -#~ msgid "From %s in %s" -#~ msgstr "Из %s в %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Из %s в %s с источником %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Из %s в %s с источниками %s и %s" - -#~ msgid "From %s on this device" -#~ msgstr "Из %s в это устройство" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "Из %s в это устройство с источником %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "Из %s в это устройство с источниками %s and %s" - -#~ msgid "From %{ipaddr?:any host} %{port?with source %{port}}" -#~ msgstr "Из %{ipaddr?:любой хост} %{port?с источником %{port}}" - -#~ msgid "IP" -#~ msgstr "IP-адрес" - -#~ msgid "IP range" -#~ msgstr "Диапазон IP-адресов" - -#~ msgid "IPs" -#~ msgstr "IP-адреса" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MAC-адреса" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Программная реализация offloading для маршрутизации/NAT" #~ msgid "" -#~ "Match %{protocol?%{family} %{protocol} traffic:any %{family} traffic} " -#~ "%{mark?with firewall mark %{mark}} %{limit?limited to %{limit}}" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Соответствует %{protocol?%{family} %{protocol} трафику:любому %{family} " -#~ "трафику} %{mark?с меткой брандмауэра %{mark}}" - -#~ msgid "Network" -#~ msgstr "Сеть" - -#~ msgid "Refuse forward" -#~ msgstr "Сбрасывать перенаправляемый трафик" - -#~ msgid "Refuse input" -#~ msgstr "Сбрасывать входящий трафик" - -#~ msgid "Refuse output" -#~ msgstr "Сбрасывать исходящий трафик" - -#~ msgid "Rewrite to" -#~ msgstr "Перезаписать" - -#~ msgid "Rewrite to %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" -#~ msgstr "" -#~ "Перезаписать на %{ipaddr?%{port?%{ipaddr}, %{port}:%{ipaddr}}:%{port}}" - -#~ msgid "Rewrite to outbound device IP" -#~ msgstr "Перезаписать на IP-адрес исходящего устройства" - -#~ msgid "To %s at %s on this device" -#~ msgstr "К %s, %s на этом устройстве" - -#~ msgid "To %s in %s" -#~ msgstr "К %s в %s" - -#~ msgid "To %s on this device" -#~ msgstr "К %s на этом устройстве" - -#~ msgid "To %s, %s in %s" -#~ msgstr "К %s, %s в %s" +#~ "Транслировать сетевые адреса и порты (NAT или NAPT) для исходящего из " +#~ "этой зоны трафика. Обычно это включено для зоны wan." #~ msgid "" -#~ "To %{ipaddr?:any destination} %{port?at %{port}} %{zone?via zone %{zone}} " -#~ "%{device?egress device %{device}}" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "На %{ipaddr?:любой адрес назначения} %{port?порт %{port}} %{zone?через " -#~ "зону %{zone}} %{device?исходящее устройство %{device}}" - -#~ msgid "Via %s" -#~ msgstr "Через %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Через %s, %s" - -#~ msgid "any host" -#~ msgstr "любого хоста" - -#~ msgid "any router IP" -#~ msgstr "любой IP-адрес маршрутизатора" - -#~ msgid "not" -#~ msgstr "нет" - -#~ msgid "port" -#~ msgstr "порт" - -#~ msgid "ports" -#~ msgstr "порты" - -#~ msgid "type" -#~ msgstr "тип" - -#~ msgid "types" -#~ msgstr "типы" - -#~ msgid "Force connection tracking" -#~ msgstr "Принудительно включать отслеживание соединений" +#~ "Перенаправление IPv4%{proto?, протокол %{proto#%{next?, }%{item.name}" +#~ "}}%{mark?, метка %{mark.val}}" #~ msgid "" -#~ "Prevent the installation of NOTRACK rules which would bypass " -#~ "connection tracking." +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" #~ msgstr "" -#~ "Предотвратить установку NOTRACK правил, которые позволяют " -#~ "обходить отслеживание соединений (connection tracking)." - -#~ msgid "Disable" -#~ msgstr "Отключить" - -#~ msgid "Restart Firewall" -#~ msgstr "Перезапустить межсетевой экран" - -#~ msgid "Rule is disabled" -#~ msgstr "Правило отключено" - -#~ msgid "Rule is enabled" -#~ msgstr "Правило включено" - -#~ msgid "Add" -#~ msgstr "Добавить" - -#~ msgid "Add and edit..." -#~ msgstr "Добавить и редактировать..." - -#~ msgid "External zone" -#~ msgstr "Внешняя зона" - -#~ msgid "New SNAT rule" -#~ msgstr "Новое правило SNAT" - -#~ msgid "New forward rule" -#~ msgstr "Новое правило перенаправления" - -#~ msgid "New input rule" -#~ msgstr "Новое правило для входящего трафика" - -#~ msgid "New port forward" -#~ msgstr "Новое перенаправление порта" - -#~ msgid "New source NAT" -#~ msgstr "Новый SNAT" - -#~ msgid "Open ports on router" -#~ msgstr "Открыть порты на маршрутизаторе" - -#~ msgid "Other..." -#~ msgstr "Другое..." - -#~ msgid "To source IP" -#~ msgstr "К IP-адресу источника" - -#~ msgid "To source port" -#~ msgstr "К порту источника" - -#~ msgid "Output zone" -#~ msgstr "Исходящая зона" +#~ "Входящий IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP с типами %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, метка %{mark.val}}%{helper?, помощник %{helper.inv?%{helper.val}:" +#~ "%{helper.val}}}" diff --git a/luci-app-firewall/po/si/firewall.po b/luci-app-firewall/po/si/firewall.po new file mode 100644 index 000000000..091093c60 --- /dev/null +++ b/luci-app-firewall/po/si/firewall.po @@ -0,0 +1,1431 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2021-03-01 07:55+0000\n" +"Last-Translator: HelaBasa \n" +"Language-Team: Sinhala \n" +"Language: si\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "ඉරිදා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "බ්‍රහස්පතින්දා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "අඟහරුවාදා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "නම් නොකළ නීතිය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "බදාදා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "සතියේ දින" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "ඕනෑම" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "විනාඩිය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "තත්පරය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "මෙම උපාංගය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "නිශ්චිතව දක්වා නැත" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/sk/firewall.po b/luci-app-firewall/po/sk/firewall.po index 492ae91ef..120d52c17 100644 --- a/luci-app-firewall/po/sk/firewall.po +++ b/luci-app-firewall/po/sk/firewall.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2020-04-04 17:34+0000\n" -"Last-Translator: Dušan Kazik \n" +"PO-Revision-Date: 2023-07-10 15:50+0000\n" +"Last-Translator: MaycoH \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -10,357 +10,445 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 5.0-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 a " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP s typmi %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- pridať IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" -msgstr "" +msgstr "-- pridať MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"Prijať %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "" +msgstr "Zabrániť prepísaniu zdroja" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"Presmerovať na %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Vynechať %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"Priradiť klasifikáciu DSCP %{set_dscp}" +"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"Priradiť súhlas pomocníka " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"%{set_mark?Assign:XOR} značka brány " +"firewall %{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Automaticky prepisovať zdrojovú " +"adresu IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Nesledovať %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"Odmietnuť %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "Musí byť určená adresa IP na prepísanie!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "ACCEPT - Zakázať prepis adresy" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Akcia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Rodina adries, Interná IP adresa sa musia zhodovať" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Rodina adries, zdrojová adresa, cieľová adresa, prepísaná IP adresa sa musia " +"zhodovať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Pokročilé nastavenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "Umožniť „neplatný“ prenos" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "" +msgstr "Umožniť presmerovanie zo zdrojových zón:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" -msgstr "" +msgstr "Umožniť presmerovanie do cieľových zón:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" -msgstr "" +msgstr "Nezáleží" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" -msgstr "" +msgstr "Akýkoľvek deň" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Obsah bol uložený." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Pokračovať" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "Pokryté zariadenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" -msgstr "" +msgstr "Pokryté siete" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "Pokryté podsiete" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" -msgstr "" +msgstr "Vlastné pravidlá" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "" +msgstr "Klasifikácia DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "Značka DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "" +msgstr "Vyžaduje sa značka DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "" +msgstr "Cieľová adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "" +msgstr "Cieľový port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Cieľová zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Názov zariadenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "" +msgstr "Zahodiť neplatné pakety" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "" +msgstr "Povoliť" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "" +msgstr "Povoliť slučku NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" -msgstr "" +msgstr "Povoliť ochranu pred útokom SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" +msgstr "Povoliť zaznamenávanie tejto zóny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "Očakáva sa: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" -msgstr "" +msgstr "Vonkajšia adresa IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" -msgstr "" +msgstr "Vonkajší port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" -msgstr "" +msgstr "Argumenty navyše" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Brána Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" +msgstr "Brána Firewall - Vlastné pravidlá" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" -msgstr "" +msgstr "Brána Firewall - Pravidlá NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "" +msgstr "Brána Firewall - Presmerovanie portov" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "" +msgstr "Brána Firewall - Pravidlá prenosu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "" +msgstr "Brána Firewall - Nastavenia zón" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Migrácia konfigurácie brány Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "" +msgstr "Presmerovanie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" -msgstr "" +msgstr "Piatok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "Všeobecné nastavenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Udeliť prístup ku konfigurácii brány firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" -msgstr "" +msgstr "Hardvérové odľahčenie toku" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (rozsah)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP sety" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/siete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/siete/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" -msgstr "" +msgstr "IPv4 a IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Iba IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "" +msgstr "Iba IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" +msgstr "Prichádzajúce zariadenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" -msgstr "" +msgstr "Vstup" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" -msgstr "" +msgstr "Vnútorná adresa IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" -msgstr "" +msgstr "Vnútorný port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" +msgstr "Vnútorná zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "Neplatná značka DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" +msgstr "Neplatná hodnota obmedzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" -msgstr "" +msgstr "Obmedziť správy záznamu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "" +msgstr "Obmedzenie prenosu podľa určenej frekvencie." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "" +msgstr "Zdrojová adresa IP slučky" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" -msgstr "" +msgstr "Maškaráda" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" -msgstr "" +msgstr "Zhoda" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "" +msgstr "Zhoda zariadenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" -msgstr "" +msgstr "Pondelok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" -msgstr "" +msgstr "Dni v mesiaci" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "Pravidlá NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Názov" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nie je plne kompatibilná so službami QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "" +msgstr "Odchádzajúce zariadenie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" +msgstr "Výstup" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -651,172 +838,203 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 -msgid "Port Forwards" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Presmerovania portov" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" +"Presmerovanie portov (port forwarding) umožňuje vzdialeným počítačom na " +"internete pripojenie k určitému počítaču alebo službe v rámci súkromnej " +"siete LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protokol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Vyžaduje hardvérovú podporu NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" -msgstr "" +msgstr "Obmedziť maškarádu na zadané cieľové podsiete" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" -msgstr "" +msgstr "Obmedziť maškarádu na zadané zdrojové podsiete" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "" +msgstr "Obmedziť na rodinu adries" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "Prepísať adresu IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." -msgstr "" +msgstr "Prepísanie zhodného prenosu do určenej zdrojovej adresy IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" +"Prepísanie zhodného prenosu do určeného zdrojového portu alebo rozsahu " +"portov." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Prepísať port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "" +msgstr "Odľahčenie smerovania/NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Prepísanie do určenej zdrojovej adresy IP alebo portu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" -msgstr "" +msgstr "Sobota" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "" +msgstr "Softvérové odľahčenie toku" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" -msgstr "" +msgstr "Zdrojová adresa IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" -msgstr "" +msgstr "Zdrojová adresa MAC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" -msgstr "" +msgstr "Zdrojová adresa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" -msgstr "" +msgstr "Zdrojový port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" -msgstr "" +msgstr "Zdrojová zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" -msgstr "" +msgstr "Dátum spustenia (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Čas spustenia (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" +msgstr "Dátum zastavenia (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Čas zastavenia (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" -msgstr "" +msgstr "Nedeľa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"Existujúca konfigurácia brány firewall musí byť zmenená, aby mohlo rozhranie " +"LuCI fungovať správne." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" +"Brána firewall vytvorí zóny medzi vašimi sieťovými rozhraniami na ovládanie " +"toku sieťového prenosu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -826,7 +1044,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -835,22 +1053,30 @@ msgid "" "networks
specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" -msgstr "" +msgstr "Štvrtok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" -msgstr "" +msgstr "Časové obmedzenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" +msgstr "Čas v UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" -msgstr "" +msgstr "Pravidlá prenosu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" -msgstr "" +msgstr "Utorok" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Nie je možné uložiť obsah: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "Nepomenované NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" -msgstr "" +msgstr "Nepomenované presmerovanie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" +msgstr "Nepomenované pravidlo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" -msgstr "" +msgstr "Nepomenovaná zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Nerozpoznaný protokol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Použiť vonkajšiu adresu IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" +msgstr "Použiť vnútornú adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" -msgstr "" +msgstr "Streda" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" -msgstr "" +msgstr "Dni v týždni" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "" +msgstr "Značka XOR brány firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" +msgstr "Značka XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" -msgstr "" +msgstr "Zóna ⇒ Presmerovania" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" +msgstr "Zóny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" -msgstr "" +msgstr "prijať" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" -msgstr "" +msgstr "nezáleží" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" +msgstr "akákoľvek zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" +msgstr "deň" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "" +msgstr "neprepísať" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "" +msgstr "nesledovať" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" +msgstr "zahodiť" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" +msgstr "hodinu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" +msgstr "minútu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" -msgstr "" +msgstr "zamietnuť" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" +msgstr "sekundu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" -msgstr "" +msgstr "toto zariadenie" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" -msgstr "" +msgstr "táto nová zóna" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "neobmedzené" +msgstr "bez obmedzenia" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "neurčené" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "MAC" -#~ msgstr "MAC" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Softvérové odľahčenie smerovania/NAT" diff --git a/luci-app-firewall/po/sr/firewall.po b/luci-app-firewall/po/sr/firewall.po new file mode 100644 index 000000000..bedc9f0f4 --- /dev/null +++ b/luci-app-firewall/po/sr/firewall.po @@ -0,0 +1,1431 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2023-11-30 14:34+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.3-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/sv/firewall.po b/luci-app-firewall/po/sv/firewall.po index 9df7a0926..36c2ffbf7 100644 --- a/luci-app-firewall/po/sv/firewall.po +++ b/luci-app-firewall/po/sv/firewall.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-10-23 12:34+0000\n" +"Last-Translator: Kristoffer Grundström \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -10,357 +10,449 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.8.2-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- lägg till IP-adress --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" -msgstr "" +msgstr "-- lägg till MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"Acceptera %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "" +msgstr "Förhindra omskrivning av källan" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"Vidarebefordra till %{dest}%{dest_ip? IP-" +"adress %{dest_ip}}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Släpp %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"Tilldela DSCP classification " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Tilldela conntrack-hjälpare " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 -msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Skriv om källans IP-adress automatiskt" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Spåra inte %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"Neka %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "En IP som kan skrivas om måste specifieras!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "ACCEPT - Inaktivera adressomskrivning" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Åtgärd" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" +"Ytterligare oformaterade iptables-argument för att klassifiera " +"destinationszonens trafik, t.ex. -p tcp --dport 443 för att " +"bara matcha utgående HTTP-trafik." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" +"Ytterligare oformaterade iptables-argument för att klassifiera " +"källzonens trafik, t.ex. -p tcp --dport 443 för att bara matcha " +"inkommande HTTP-trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adressfamilj, intern IP-adress måste överensstämma" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adressfamilj, källadress, destinationsadress, omskrivnings IP-adress måste " +"överensstämma" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "Avancerade inställningar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "Tillåt \"ogiltig\" trafik" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Tillåt vidarebefordring från källzonerna:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Till vidarebefordring till destinationszonerna::" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Något" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" -msgstr "" +msgstr "Vilken dag som helst" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" +"Applicera den givna DSCP-klassificeringen eller värde till etablerade " +"anslutningar." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" +"Applicera automatiskt conntrack-hjälpare baserat på trafikprotokoll och port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "" +msgstr "Inställningar för Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "" +msgstr "Conntrack-hjälpare" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "Innehåll har sparats." +msgstr "Innehållet har sparats." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" +msgstr "Fortsätt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "Täckta enheter" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Nätverk som omfattas" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "Subnät som omfattas" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Anpassade regler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" +"Skräddarsydda regler tillåter dig att exekvera arbiträra iptables-kommandon " +"som annars inte täcks av brandväggsramverket. Kommandona är exekverade efter " +"varje omstart av brandväggen, direkt efter när standardreglerna har laddats." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "" +msgstr "DSCP-klassificering" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "DSCP-märkning" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "" +msgstr "DSCP-märkning obligatorisk" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Destinationens adress" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Destinationsport" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Destinationens zon" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Enhetens namn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" +"Installera inte extra regler för att blockerade vidarebefordrad trafik med " +"conntrack-tillståndet invalid. Detta kan behövas för komplexa, " +"asymmetriska ruttuppsättningar." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Släpp ogiltiga paket" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Aktivera" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "" +msgstr "Aktivera NAT Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Aktivera loggning i den här zonen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Aktivera IPv4 nätverksadress och portöversättning (NAT4 eller NAPT4) för " +"utåtgående trafik på denna zon. Detta är vanligtvist aktiverat på wan-zonen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Aktivera IPv6 nätverksadress och portöversättning (NAT6 eller NAPT6) för " +"utåtgående trafik på denna zon." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Aktiverat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "Förväntade: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Extern IP-adress" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Extern port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Extra argument" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Brandvägg" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Brandvägg - Anpassade regler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 -msgid "Firewall - NAT Rules" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Brandvägg - NAT-regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Brandvägg - Vidarebefordring av port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Brandvägg - Trafikregler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Brandvägg - Zoninställningar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Vidarebefordra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "Fredag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"Från %{src}%{src_device?, gränssnitt %{src_device}}%{src_ip?, IP-" +"adress %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "Generella inställningar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Tillåt åtkomst till brandväggskonfigurationen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 och IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Endast IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Endast IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Inmatning" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Intern IP-adress" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Intern port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Intern zon" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" +msgstr "Ogiltigt gränsvärde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Begränsa loggmeddelanden" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Maskering" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Matcha" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "" +msgstr "Matcha DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Matchar ICMP-typ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "" +msgstr "Matcha enhet" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -551,101 +713,135 @@ msgstr "" "Matcha inkommande trafik dirigerad till den angivna destinationsporten eller " "portens räckvidd på den här värden" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Måndag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Dagar i månaden" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "NAT-regler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Namn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Inte fullt kompatibel med QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." -msgstr "" +msgstr "Matcha endast inkommande trafik från de här MAC-adresserna." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" "Matcha endast inkommande trafik från den här IP-adressen eller räckvidden." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Utmatning" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -654,172 +850,196 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Vidarebefordringar av port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Protokoll" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Kräver hårdvarustöd för NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Begränsa till adressfamilj" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "Skriv om IP-adress" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Skriv om port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Skriv om till specifik IP-källa eller port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Lördag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "IP-adress för källa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "MAC-adress för källa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Adress för källkod" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" -msgstr "" +msgstr "Käll-port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Startdatum (åååå-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Starttid (tt.mm.ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Stopptid (åååå-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stopptid (tt.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Söndag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"Den befintliga brandväggskonfigurationen behöver ändras för att LuCi ska " +"fungera som det ska." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -829,7 +1049,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -838,22 +1058,30 @@ msgid "" "networks
specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Torsdag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" -msgstr "" +msgstr "Tidsbegränsningar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Tid enligt UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Trafikregler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Tisdag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "NAT utan namn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" +msgstr "Regel utan namn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" -msgstr "" +msgstr "Zon utan namn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Använd en extern IP-adress" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" +msgstr "Använd en intern IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Onsdag" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Veckodagar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 -msgid "Zone ⇒ Forwardings" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zon ⇒ Vidarebefordringar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Zoner" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "acceptera" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "något" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "alla zoner" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" +msgstr "tilldela conntrack-hjälpare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" +msgstr "dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "" +msgstr "skriv inte om" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "spåra inte" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "släpp" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" +msgstr "timme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" +msgstr "minut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "neka" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" +msgstr "sekund" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" -msgstr "" +msgstr "den här enheten" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" -msgstr "" +msgstr "den här nya zonen" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "obegränsad" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" +msgstr "ospecificerad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" -#~ msgid "%s in %s" -#~ msgstr "%s i %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s med %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%2, %s i %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d pkt. per %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d pkt. per %s, brustna %d pkt." - -#~ msgid "%s and limit to %s" -#~ msgstr "%s och gränsen till %s" - -#~ msgid "Destination IP address" -#~ msgstr "Destinationens IP-adress" - -#~ msgid "Do not rewrite" -#~ msgstr "Skriv inte om igen" - -#~ msgid "Forward to" -#~ msgstr "Vidarebefordra till" - -#~ msgid "From %s in %s" -#~ msgstr "Från %s i %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "Från %s i %s med källa %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "Från %s i %s med källa %s och %s" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "Network" -#~ msgstr "Nätverk" - -#~ msgid "To %s at %s on this device" -#~ msgstr "Till %s vid %s på den här enheten" - -#~ msgid "To %s in %s" -#~ msgstr "Till %s i %s" - -#~ msgid "To %s on this device" -#~ msgstr "Till %s på den här enheten" - -#~ msgid "To %s, %s in %s" -#~ msgstr "Till %s, %s i %s" - -#~ msgid "Via %s" -#~ msgstr "Via %s" - -#~ msgid "any host" -#~ msgstr "alla värdar" - -#~ msgid "port" -#~ msgstr "port" - -#~ msgid "ports" -#~ msgstr "portar" - -#~ msgid "type" -#~ msgstr "typ" - -#~ msgid "Disable" -#~ msgstr "Inaktivera" - -#~ msgid "Restart Firewall" -#~ msgstr "Starta om brandvägg" - -#~ msgid "Add" -#~ msgstr "Lägg till" - -#~ msgid "Add and edit..." -#~ msgstr "Lägg till och redigera..." - -#~ msgid "External zone" -#~ msgstr "Extern zon" - -#~ msgid "New SNAT rule" -#~ msgstr "Ny SNAT-regel" - -#~ msgid "New forward rule" -#~ msgstr "Ny regel för vidarebefordring" - -#~ msgid "New input rule" -#~ msgstr "Ny inmatningsregel" - -#~ msgid "New port forward" -#~ msgstr "Ny vidarebefordring av port" - -#~ msgid "New source NAT" -#~ msgstr "Ny käll-NAT" - -#~ msgid "Open ports on router" -#~ msgstr "Öppna portar i router" - -#~ msgid "Other..." -#~ msgstr "Andra..." - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(Namnlös post)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(Namnlös regel)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(Namnlös SNAT)" - -#~ msgid "Match forwarded traffic to the given destination port or port range." +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "Matcha vidarebefordrad trafik till den angivna destinationsporten eller " -#~ "portens räckvidd." - -#~ msgid "Rewrite to source %s" -#~ msgstr "Skriv om igen till källan %s" - -#~ msgid "SNAT IP address" -#~ msgstr "IP-adress för SNAT" - -#~ msgid "SNAT port" -#~ msgstr "SNAT-port" - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "Starttid (tt:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "Stopptid (tt:mm:ss)" - -#~ msgid "Zone %q" -#~ msgstr "Zon %q" - -#~ msgid "traffic" -#~ msgstr "trafik" +#~ "Vidarebefordrade IPv4%{proto?, protocol %{proto#%{next?, }%{item." +#~ "name}}}%{mark?, mark %{mark.val}}" diff --git a/luci-app-firewall/po/templates/firewall.pot b/luci-app-firewall/po/templates/firewall.pot index bd49dd2ae..756e81ffd 100644 --- a/luci-app-firewall/po/templates/firewall.pot +++ b/luci-app-firewall/po/templates/firewall.pot @@ -1,360 +1,412 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:433 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:84 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:173 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:229 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:364 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:158 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:138 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:327 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:508 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:274 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:652 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:156 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:54 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:374 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:355 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:357 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:181 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:235 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:164 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:290 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" -#: luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:50 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:30 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:285 -msgid "" -"Forwards ports from server using V2Ray proxy (if enabled) instead of VPN" -msgstr "" - -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:149 -msgid "Full Cone" -msgstr "" - -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:40 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -#: luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "" -#: luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 msgid "Grant access to firewall configuration" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:209 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:274 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:38 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:228 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:304 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:382 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:75 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:218 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:147 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:285 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:195 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:262 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:399 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:262 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:399 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:442 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:130 -#: luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:245 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:291 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:423 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -653,172 +796,194 @@ msgid "" "all services." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:132 -#: luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:186 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:75 -msgid "Requires hardware NAT support. Implemented at least for mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:437 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:340 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:342 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:190 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:333 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:453 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:281 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:465 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:293 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:457 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:285 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:646 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:193 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -828,7 +993,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:104 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -837,22 +1002,30 @@ msgid "" "networks
specifies which available networks are members of this zone." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:469 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 -#: luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:277 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:140 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:145 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:159 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:190 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:109 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:550 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:647 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -msgid "Use V2Ray" -msgstr "" - -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:330 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:426 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:122 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:56 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:138 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:267 -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:433 -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:455 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:211 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:243 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:264 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:290 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:345 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:360 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:394 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:401 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:49 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:82 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:40 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:50 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:68 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:68 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:68 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:68 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:49 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:58 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:82 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:50 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:353 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" diff --git a/luci-app-firewall/po/tr/firewall.po b/luci-app-firewall/po/tr/firewall.po index 0f934366f..a29a38ec7 100644 --- a/luci-app-firewall/po/tr/firewall.po +++ b/luci-app-firewall/po/tr/firewall.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-03-31 19:53+0000\n" +"Last-Translator: Oğuz Han \n" "Language-Team: Turkish \n" "Language: tr\n" @@ -10,357 +10,479 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.5-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Yönlendirilen:Gelen}:Giden} %{ipv6?%{ipv4?IPv4 ve " +"IPv6:IPv6}:IPv4}%{proto?, protokol " +"%{proto#%{next?, }%{item.types?%{item." +"name}Türlerle ICMP %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp." +"val}:%{dscp.val}}}%{helper?, yardımcı %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "IP ekle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" -msgstr "" +msgstr "MAC ekle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"KABUL ET %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" +"Kaynağın yeniden yazılmasını engelle" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"Yönlendir to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Reddet %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"DSCP tanımla classification %{set_dscp}" +"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"Bağlantı atama yardımcı " +"%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"%{set_mark?Ata:XOR} güvenlik duvarı işareti " +"%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" +"Kaynak IP'siniOtomatik olarak yeniden yaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Takip etme %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"REDDET %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"Statik olarak yeniden yaz kaynağa " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "Yeniden yazmak için bir IP belirtilmek zorunda!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "KABUL ET - Adres yeniden yazmayı devre dışı bırak" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Eylem" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" +"Bölge hedef trafiğini sınıflandırmak için ek ham iptables bağımsız " +"değişkenleri, ör. Yalnızca giden HTTPS trafiğini eşleştirmek için -p " +"tcp --dport 443." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" +"Bölge kaynak trafiğini sınıflandırmak için ek ham iptables bağımsız " +"değişkenleri, ör. Yalnızca gelen HTTPS trafiğini eşleştirmek için -p " +"tcp --sport 443." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adres ailesi, Dahili IP adresi eşleşmelidir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adres ailesi, kaynak adresi, hedef adresi, yeniden yazılan IP adresi " +"eşleşmelidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" -msgstr "" +msgstr "Gelişmiş Ayarlar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "\"Geçersiz\" trafiğe izin ver" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "" +msgstr "Kaynak bölgelerden gelen yönlendirmeye izin ver" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" -msgstr "" +msgstr " Hedef bölgelerden gelen yönlendirmeye izin ver" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" -msgstr "" +msgstr "Herhangi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" -msgstr "" +msgstr "Herhangi bir gün" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" +"Verilen değerin bitsel XOR değerini ve kurulan bağlantılarda mevcut işaret " +"değerini uygulayın. Biçim değerdir [/mask]. Bir maske belirtilirse, maskede " +"ayarlanan bu bitler sıfırlanır." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." -msgstr "" +msgstr "Verilen DSCP sınıfını veya değerini kurulan bağlantılara uygulayın." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." -msgstr "" +msgstr "Belirtilen bağlantı izleme yardımcısını eşleşen trafiğe atayın." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" -msgstr "" +msgstr "Otomatik yardımcı atama" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" +"Trafik protokolü ve bağlantı noktasına göre bağlantı yardımcılarını otomatik " +"olarak atayın" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Yorum" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "" +msgstr "Conntrack Ayarları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "" +msgstr "Conntrack yardımcıları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "" +msgstr "İçerik kaydedildi." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" -msgstr "" +msgstr "Devam et" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Sayaçlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "Kapsanan cihazlar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" -msgstr "" +msgstr "Kapsanan ağlar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "Kapsanan alt ağlar" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" -msgstr "" +msgstr "Özel Ayarlar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" +"Özel kurallar, güvenlik duvarı çerçevesi tarafından başka şekilde " +"kapsanmayan keyfi iptables komutlarını yürütmenize olanak tanır. Komutlar, " +"her güvenlik duvarı yeniden başlatıldıktan sonra, varsayılan kural seti " +"yüklendikten hemen sonra yürütülür." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "" +msgstr "DSCP sınıflandırması" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "DSCP işareti" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "" +msgstr "DSCP işareti gerekli" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "" +msgstr "Hedef adres" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "" +msgstr "Hedef bağlantı noktası" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" -msgstr "" +msgstr "Hedef bölge" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Cihaz adı" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" +"Bağlantı durumu invalid olan iletilen trafiği reddetmek için " +"fazladan kurallar yüklemeyin. Bu, karmaşık asimetrik yol kurulumları için " +"gerekli olabilir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "" +msgstr "Geçersiz paketleri düşür" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "" +msgstr "Etkinleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "" +msgstr "NAT Döngü sınamasını etkinleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" -msgstr "" +msgstr "SYN-flood korumasını etkinleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" -msgstr "" +msgstr "Bu bölgede günlük kaydetmeyi etkinleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Bu bölgedeki giden trafik için ağ adresini ve bağlantı noktası çevirisi " +"IPv4'ü (NAT4 veya NAPT4) etkinleştirin. Bu genellikle wan " +"bölgesinde etkinleştirilir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Bu bölgedeki giden trafik için ağ adresini ve bağlantı noktası çevirisi " +"IPv6'yı (NAT6 veya NAPT6) etkinleştir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Etkinleştirildi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Küme için paket ve bayt sayısı takibini etkinleştirir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "Beklenen: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" +"Bölge trafiği için izin verilen bağlantı izleme yardımcılarını açıkça seçer" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" -msgstr "" +msgstr "Harici IP adresi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" -msgstr "" +msgstr "Harici port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" -msgstr "" +msgstr "Ekstra argümanlar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" -msgstr "" +msgstr "Ekstra hedef argümanlar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "" +msgstr "Ekstra iptables argümanları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" -msgstr "" +msgstr "Ekstra kaynak argümanlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Aile" #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" -msgstr "" +msgstr "Güvenlik Duvarı" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" -msgstr "" +msgstr "Güvenlik duvarı - Özel Kurallar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Güvenlik Duvarı - IP setleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" -msgstr "" +msgstr "Güvenlik duvarı - NAT Kuralları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "" +msgstr "Güvelik duvarı - Port Yönlendirme" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "" +msgstr "Güvenlik duvarı - Trafik Kuralları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "" +msgstr "Güvenlik duvarı - Bölge Ayarları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Güvenlik duvarı yapılandırma geçişi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "" +msgstr "Yönlendir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" +"İletilen %{ipv6?%{ipv4?IPv4 ve IPv6:IPv6}:" +"IPv4}%{proto? , protokol %{proto#%{sonraki?, >%{item.name}}%{mark?, mark %{mark.val}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" -msgstr "" +msgstr "Cuma" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"Nereden %{src}%{src_device?, arayüz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" +"Nereden %{src}%{src_device?, arayüz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" +"Nereden %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" +msgstr "Genel Ayarlar" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Güvenlik duvarı yapılandırmasına erişim ver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" -msgstr "" +msgstr "Donanım akış boşaltma" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (aralık)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP Setleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP'ler/Ağlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP'ler/Ağlar/MAC'ler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" -msgstr "" +msgstr "IPv4 ve IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "" +msgstr "Yalnızca IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 Maskeleme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "" +msgstr "Yalnızca IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" -msgstr "" +msgstr "Gelen cihaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Dosyayı İçer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" +"Gelen %{ipv6?%{ipv4?IPv4 ve IPv6:IPv6}:" +"IPv4}%{proto? , protokol %{proto#%{sonraki?, }%{item.types?%{item.name>% " +"türleriyle ICMP {item.types#%{sonraki?, >%{item:" +"%{item.name}}}%{ mark?, mark %{mark.val}%{helper?, " +"helper %{helper.inv?%{helper.val dışındaki herhangi bir yardımcıyla eşleştir:%{helper.val} }}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "İlk Hash Boyutu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" -msgstr "" +msgstr "Giriş" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" -msgstr "" +msgstr "Dahili IP adresi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" -msgstr "" +msgstr "İç bağlantı noktası" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" -msgstr "" +msgstr "İç bölge" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Bölge içi ileri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "Geçersiz DSCP işareti" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" -msgstr "" +msgstr "Geçersiz sınır değeri" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Geçersiz küme adı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" -msgstr "" +msgstr "Sınır patlaması" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" -msgstr "" +msgstr "Günlük mesajlarını sınırla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" -msgstr "" +msgstr "Eşlemeyi sınırla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" +"Eşleşmeyi bununla sınırla %{limit.num} packets per %{limit." +"unit}%{limit.burst? burst %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Sınırlı maskeleme etkin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "" +msgstr "Belirtilen oranla eşleşen trafiği sınırlar." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "" +msgstr "Geri döngü kaynak IP'si" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "" +msgstr "MASQUERADE - Giden arayüz IP'sine otomatik olarak yeniden yaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" -msgstr "" +msgstr "MSS bağlama" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" -msgstr "" +msgstr "Maskeleme" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" -msgstr "" +msgstr "Eşleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "" +msgstr "DSCP ile eşleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" -msgstr "" +msgstr "ICMP tipiyle eşleş" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "" +msgstr "Cihazı eşleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." -msgstr "" +msgstr "Verilen IP adresine yönlendirilen trafiği eşleştirin." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" +"Verilen hedef, bağlantı noktası veya bağlantı noktası aralığına " +"yönlendirilen iletilen trafiği eşleştirin." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." -msgstr "" +msgstr "Bu IP veya aralıktan yönlendirilen trafiği eşleştirin." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" +"Verilen kaynak bağlantı noktasından veya bağlantı noktası aralığından gelen " +"iletilen trafiği eşleştirin." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "" +msgstr "Yardımcıyı eşleştir" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 -msgid "Match mark" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 -msgid "Match traffic using the specified connection tracking helper." -msgstr "" +"Bu ana bilgisayardaki belirli hedef bağlantı noktasına veya bağlantı noktası " +"aralığına yönlendirilen gelen trafiği eşleştirin" #: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "İşaretleri eşleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Belirtilen bağlantı izleme yardımcısını kullanarak trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" +"Belirli bir güvenlik duvarı işaretiyle veya bir dizi farklı işaretle eşleşir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." -msgstr "" +msgstr "Belirtilen giden ağ cihazını kullanarak iletilen trafiği eşleştirir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." -msgstr "" +msgstr "Belirtilen DSCP işaretini taşıyan trafikle eşleşir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maks Girişler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Azami Uzunluk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" +"Eşleşecek maksimum ilk paket sayısı: Bu sayı, bu sayıya kadar yukarıda " +"belirtilen sınıra her ulaşılmadığında bir kez yeniden doldurulur." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" -msgstr "" +msgstr "Pazartesi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" -msgstr "" +msgstr "Ayın Günleri" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "NAT Kuralları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" +"NAT kuralları, giden veya iletilen trafik için kullanmak üzere kaynak IP " +"üzerinde ayrıntılı denetime izin verir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" +msgstr "Ad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "QoS/SQM ile tam uyumlu değildir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." -msgstr "" +msgstr "Yalnızca verilen IP adresine yönlendirilen gelen trafiği eşleştirin." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." -msgstr "" +msgstr "Yalnızca bu MAC'lardan gelen trafiği eşleştirin." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." -msgstr "" +msgstr "Yalnızca bu IP veya aralıktan gelen trafiği eşleştirin." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" +"Yalnızca istemci ana bilgisayardaki belirli kaynak bağlantı noktasından veya " +"bağlantı noktası aralığından gelen trafiği eşleştirin" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "" +msgstr "Giden cihaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" -msgstr "" +msgstr "Giden bölge" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" -msgstr "" +msgstr "Çıkış" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Paket Alan Eşleşmesi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Eşleşecek paket alanları.
Sözdizimi: direction_datatype. " +"örneğin: src_port, dest_net.
Yol tarifleri: src, " +"dst. Veri türleri: ip, port, mac, net, set.
Yön " +"önekleri isteğe bağlıdır.
*Not: set veri türü fw4'te " +"desteklenmez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" +msgstr "İptables'a ek argümanlar iletir. Dikkatli kullanın!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -650,173 +923,217 @@ msgid "" "invalid values could render the firewall ruleset broken, completely exposing " "all services." msgstr "" +"Ham iptables argümanlarını kaynak ve hedef trafik sınıflandırma kurallarına " +"geçirmek, paketleri arayüzler veya alt ağlar dışında başka kriterlere göre " +"eşleştirmeye izin verir. Geçersiz değerler güvenlik duvarı kural setini " +"bozabileceğinden ve tüm hizmetleri tamamen açığa çıkarabileceğinden, bu " +"seçenekler son derece dikkatli kullanılmalıdır." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 -msgid "Port Forwards" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" msgstr "" +"CIDR'lerin, alt ağların, ana bilgisayar IP'lerinin vb. dosyasının yolu.
" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Yönlendirmeleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" +"Bağlantı noktası yönlendirme, İnternet üzerindeki uzak bilgisayarların özel " +"LAN içindeki belirli bir bilgisayara veya hizmete bağlanmasına izin verir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Bağlantı noktası aralığı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" -msgstr "" +msgstr "Protokol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" +"Gelen trafiği dahili ana bilgisayardaki belirli bağlantı noktasına " +"yönlendirin" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" -msgstr "" +msgstr "Gelen trafiği belirtilen dahili ana bilgisayara yönlendirin" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Harici Sete Bakın" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Yansıma bölgeleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Donanımsal NAT desteği gerektirir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" -msgstr "" +msgstr "Maskelendirmeyi verilen hedef alt ağlarla sınırla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" -msgstr "" +msgstr "Maskelemeyi verilen kaynak alt ağlarla kısıtla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "" +msgstr "Adres ailesiyle sınırla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "IP adresini yeniden yaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." -msgstr "" +msgstr "Eşleşen trafiği belirtilen kaynak IP adresine yeniden yazın." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" +"Eşleşen trafiği belirtilen kaynak bağlantı noktasına veya bağlantı noktası " +"aralığına yeniden yazın." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Bağlantı noktasını yeniden yaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "" +msgstr "Yönlendirme / NAT Aktarımı" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Belirli bir kaynak IP'sine veya bağlantı noktasına yeniden yaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" -msgstr "" +msgstr "Cumartesi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "" +msgstr "İşaret ayarla" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" +"Kurulan bağlantılarda verilen işaret değerini ayarlayın. Biçim değerdir [/" +"mask]. Bir maske belirtilirse, sadece maskede ayarlanan bitler değiştirilir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "" +msgstr "Yazılım tabanlı akış boşaltma" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" -msgstr "" +msgstr "Kaynak IP Adresi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" -msgstr "" +msgstr "Kaynak MAC adresi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" -msgstr "" +msgstr "Kaynak adresi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" -msgstr "" +msgstr "Kaynak portu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" -msgstr "" +msgstr "Kaynak bölgesi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" +"Bu trafik kuralının belirli bir gelen veya giden ağ cihazına bağlanıp " +"bağlanmayacağını belirtir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" +"Yansıtılan trafik için harici veya dahili IP adresinin kullanılıp " +"kullanılmayacağını belirtir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" -msgstr "" +msgstr "Başlangıç Tarihi (yyyy-aa-gg)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Başlangıç Zamanı (sa.dd.sn)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" -msgstr "" +msgstr "Bitiş Tarihi (yyyy-aa-gg)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Durdurma Zamanı (sa.dd.sn)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Depolama Yöntemi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" -msgstr "" +msgstr "Pazar" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"LuCI'nin düzgün çalışması için mevcut güvenlik duvarı yapılandırmasının " +"değiştirilmesi gerekir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" +"Güvenlik duvarı, ağ trafiği akışını kontrol etmek için ağ arayüzleriniz " +"üzerinde bölgeler oluşturur." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -825,8 +1142,14 @@ msgid "" "rule is unidirectional, e.g. a forward from lan to wan does " "not imply a permission to forward from wan to lan as well." msgstr "" +"Aşağıdaki seçenekler, bu bölge (%s) ile diğer bölgeler arasındaki " +"yönlendirme politikalarını kontrol eder. Hedef bölgeler " +"yönlendirilen trafiği eşleştirin hedeflenen %q. Kaynak " +"bölgeler diğer bölgelerden gelen trafiği eşleştirin hedeflenen " +"%q. İletim kuralı tek yönlüdür,Örneğin. lan'dan wan'a " +"yönlendirme, wan'dan lan'a yönlendirme izni anlamına gelmez." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -834,23 +1157,36 @@ msgid "" "forwarded traffic between different networks within the zone. Covered " "networks specifies which available networks are members of this zone." msgstr "" +"Bu bölüm,% q öğesinin ortak özelliklerini tanımlar. giriş ve " +"çıkış seçenekleri, bu bölgeye giren ve çıkan trafik için varsayılan " +"politikaları ayarlarken, yönlendir seçeneği farklı ağlar arasında " +"yönlendirilen trafik için politikayı açıklar bölge içinde. Kapsanan ağla " +", hangi kullanılabilir ağların bu bölgenin üyesi olduğunu belirtir." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" -msgstr "" +msgstr "Perşembe" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" -msgstr "" +msgstr "Zaman Kısıtlamaları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" -msgstr "" +msgstr "UTC Zamanı" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Bu kural için zaman kısıtlamaları etkinleştirildi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Zaman aşımı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" +"Buraya %{dest}%{dest_device?, arayüz %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" +"Buraya %{dest}%{dest_device?, arayüz aracılığıyla %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item." +"ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" +"Buraya %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item." +"ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" -msgstr "" +msgstr "İzleme yardımcısı" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" -msgstr "" +msgstr "Trafik kuralları" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" +"Trafik kuralları, örneğin belirli ana bilgisayarlar arasındaki trafiği " +"reddetmek veya yönlendiricide WAN bağlantı noktalarını açmak gibi farklı " +"bölgeler arasında seyahat eden paketler için politikalar tanımlar." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" -msgstr "" +msgstr "Salı" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" -msgstr "" +msgstr "İçerik kaydedilemiyor: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Birim: saniye. Varsayılan 0, girişin sete kalıcı olarak " +"eklendiği anlamına gelir.
Maks: 2147483 saniye." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "" +msgstr "Bilinmeyen veya yüklenmemiş bağlantı yolu yardımcısı \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "İsimsiz NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" -msgstr "" +msgstr "İsimsiz yönlendirme" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" -msgstr "" +msgstr "İsimsiz kural" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Adsız küme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" -msgstr "" +msgstr "İsimsiz bölge" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Bilinmeyen protokol" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" +"\"Devam\" düğmesine basıldığında, \"SNAT\" hedefli \"yeniden yönlendirme\" " +"bölümleri \"nat\" bölümlerine dönüştürülecek ve güncellenmiş yapılandırmayı " +"uygulamak için güvenlik duvarı yeniden başlatılacaktır." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Harici bir IP adresi kullan" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" -msgstr "" +msgstr "Dahili bir IP adresi kullan" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "ipset'i kullan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" +"Bölge trafiğini ham, uci yönetilmeyen ağ cihazlarına göre " +"sınıflandırmak için bu seçeneği kullanın." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" +"Bölge trafiğini ağlar veya cihazlar yerine kaynak veya hedef alt ağa göre " +"sınıflandırmak için bu seçeneği kullanın." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "" +msgstr "Geçerli güvenlik duvarı işareti gerekli" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" -msgstr "" +msgstr "Çarşamba" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" -msgstr "" +msgstr "Hafta içi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "" +msgstr "XOR güvenlik duvarı işareti" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" -msgstr "" +msgstr "XOR işareti" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Cihazınız firewall4'ü çalıştırmıyor." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Cihazınız firewall4'ü çalıştırıyor." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" -msgstr "" +msgstr "Bölge ⇒ Yönlendirmeler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" -msgstr "" +msgstr "Bölgeler" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Yansıma kurallarının oluşturulacağı bölgeler. Ayarlanmadığı takdirde " +"yalnızca hedef bölge kullanılır." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" -msgstr "" +msgstr "kabul et" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" -msgstr "" +msgstr "herhangi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" -msgstr "" +msgstr "herhangi bir bölge" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "herhangi biri/hepsi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" -msgstr "" +msgstr "güvenlik duvarı işaretini uygula" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" -msgstr "" +msgstr "bağlantı yardımcısı atama" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "otomatik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap yalnızca ipv4'tür" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" -msgstr "" +msgstr "gün" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Hedef IP'si" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Hedef MAC adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Hedef (alt)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Hedef Bağlantı Noktası" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Hedef ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "" +msgstr "yeniden yazma" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "" +msgstr "izleme" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" -msgstr "" +msgstr "düşür" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"Firewall4, eşleşecek öğe başına bir kural oluşturmaya gerek kalmadan büyük " +"adres listelerinin eşleştirilmesini kolaylaştırmak için IP kümelerine " +"referans vermeyi ve oluşturmayı destekler. ipset'lerdeki bağlantı noktası " +"aralıkları güvenlik duvarı4 tarafından desteklenmez.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" -msgstr "" +msgstr "saat" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Eşleştirme veri türleriyle kullanım için: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" -msgstr "" +msgstr "dakika" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (alt)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" -msgstr "" +msgstr "reddet" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" -msgstr "" +msgstr "ikinci" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Kaynak ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Kaynak IP'si" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Kaynak MAC adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Kaynak (alt)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Kaynak Bağlantı Noktası" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" -msgstr "" +msgstr "bu cihaz" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" -msgstr "" +msgstr "bu yeni bölge" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "sınırsız" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" -msgstr "" +msgstr "belirtilmemiş" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "65536 girişe kadar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "" +msgstr "geçerli güvenlik duvarı işareti" -#~ msgid "IPv4" -#~ msgstr "IPv4" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Yazılım tabanlı boşaltma, yönlendirme/NAT için" -#~ msgid "MAC" -#~ msgstr "MAC" +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Bu bölgede giden trafik için ağ adresi ve bağlantı noktası çevirisini " +#~ "(NAT veya NAPT) etkinleştir. Bu genellikle wan bölgesinde " +#~ "etkinleştirilir." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Yönlendirilen IPv4 %{proto?, protocol %{proto#%{next?, }%{item.name}" +#~ "}}%{mark?, işaretle %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Gelen IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}Türlerle ICMP %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, yardımcı %{helper.inv?%{helper." +#~ "val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/uk/firewall.po b/luci-app-firewall/po/uk/firewall.po index b6fea811a..fd83e1770 100644 --- a/luci-app-firewall/po/uk/firewall.po +++ b/luci-app-firewall/po/uk/firewall.po @@ -1,29 +1,29 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2020-02-19 13:41+0000\n" -"Last-Translator: Yurii Petrashko \n" +"PO-Revision-Date: 2024-10-17 17:10+0000\n" +"Last-Translator: Andrew \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.11\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.8-rc\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." @@ -32,83 +32,91 @@ msgstr "" "%{src?%{dest?Переспрямовування:Вхідний}:Вихідний} %{ipv6?%{ipv4?IPv4 та IPv6:IPv6}:IPv4}%{proto?, протокол " "%{proto#%{next?, }%{item.types?%{item." -"name}ICMP із типами %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, позначка %{mark.val}ICMP із типами %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, позначка " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, помічник %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- додати IP-адресу --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- додати MAC-адресу --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" "Приймати %{src?%{dest?переспрямований:" "вхідний}:вихідний} трафік" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "Запобігати перезапису джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" "Переспрямовувати на %{dest}%{dest_ip? IP-" "адресу %{dest_ip}}%{dest_port? порт %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" "Відхиляти %{src?%{dest?переспрямований:" "вхідний}:вихідний} трафік" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -"Призначити DSCP класифікатор " -"%{set_dscp}" +"Призначити DSCP класифікатор " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" "Призначити помічника відслідковування " "з'єднань %{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" "%{set_mark?Призначити мітку:XOR мітки} " "брандмауера %{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" "Автоматично перезаписувати IP-адресу " "джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" @@ -116,39 +124,39 @@ msgstr "" "Не відслідковувати %{src?%{dest?" "переспрямований:вхідний}:вихідний} трафік" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" "Відхиляти %{src?%{dest?переспрямований:" "вхідний}:вихідний} трафік" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" "Статично перезаписувати %{snat_ip?IP-адресу " -"джерела на %{snat_ip}} %{snat_port?порт джерела на " -"%{snat_port}}" +"джерела на %{snat_ip}} %{snat_port?порт джерела на " +"%{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "Потрібно вказати IP-адресу для перезапису!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "ACCEPT — Вимкнути перезапис адреси" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Дія" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " @@ -158,7 +166,7 @@ msgstr "" "призначення зони, наприклад, -p tcp --dport 443, щоб зіставляти " "лише вихідний трафік HTTPS." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." @@ -167,37 +175,47 @@ msgstr "" "зони, наприклад, -p tcp --sport 443, щоб зіставляти лише " "вхідний трафік HTTPS." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 -msgid "Advanced Settings" -msgstr "Додаткові параметри" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Розширені налаштування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "Дозволити \"неправильний\" трафік" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "Дозволити переспрямовування від зон джерела:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "Дозволити переспрямовування до зон призначення:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "Будь-який" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "Будь-який день" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " @@ -207,65 +225,74 @@ msgstr "" "встановлених з'єднань. Формат — значення[/маска]. Якщо маску вказано, то " "біти, встановлені в масці, обнуляються." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "Застосувати заданий клас або значення DSCP до встановлених з'єднань." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" "Призначити вказаного помічника відслідковування з'єднань для відповідного " "трафіку." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "Автоматичне призначення помічника" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -"Автоматично призначати помічників відслідковування з'єднань (Conntrack) на підставі протоколу та порту " -"трафіку" +"Автоматично призначати помічників відслідковування з'єднань (Conntrack) на підставі протоколу та " +"порту трафіку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -"Параметри відслідковування з'єднань (Conntrack)" +"Параметри відслідковування з'єднань (Conntrack)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -"Помічники відслідковування з'єднань (Conntrack)" +"Помічники відслідковування з'єднань (Conntrack)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "Вміст збережено." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "Продовжити" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "Охоплені пристрої" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "Охоплені мережі" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "Охоплені підмережі" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "Настроювані правила" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -276,37 +303,37 @@ msgstr "" "виконуються після кожного перезавантаження брандмауера, відразу після " "завантаження типового набору правил." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "класифікація DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "Позначка DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "Потрібна позначка DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "Адреса призначення" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "Порт призначення" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "Зона призначення" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "Назва пристрою" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." @@ -315,120 +342,145 @@ msgstr "" "зі станом відслідковування з'єднань invalid. Це може знадобитися " "для складних налаштувань асиметричного маршруту." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Відхиляти помилкові пакети" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "Увімкнути" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "Увімкнути NAT Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "Увімкнути захист від SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "Увімкнути реєстрування у цій зоні" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Увімкнено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "Очікується: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "Експериментальна функція. Не повністю сумісно з QoS / SQM." - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" "В явному вигляді дозволені помічники відслідковування з'єднань для трафіку " "зони" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "Зовнішня IP-адреса" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "Зовнішній порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "Додаткові аргументи" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "Додаткові аргументи для призначення" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "Додаткові аргументи iptables" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "Додаткові аргументи для джерела" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Брандмауер" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "Брандмауер — Настроювані правила" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "Брандмауер — Правила NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "Брандмауер — Переспрямовування портів" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "Брандмауер — Правила трафіку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "Брандмауер — Параметри зон" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "Переміщення конфігурації брандмауера" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "Переспрямовування" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -"Переспрямовування IPv4%{proto?, протокол %{proto#%{next?, }%{item.name}" -"}}%{mark?, позначка %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "П'ятниця" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " "%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адреса %{src_mac#" -"%{next?, }%{item.ival}}}" +"%{item.val}.\"}>%{item.ival}}}%{src_mac?, MAC-адреса " +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" "Із %{src}%{src_ip?, IP-адреса %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " -"MAC-адреса %{src_mac#%{next?, }%{item.ival}}}" +"var>}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адреса %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" -msgstr "Загальні параметри" +msgstr "Загальні налаштування" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Надати доступ до конфігурування брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "Апаратні засоби розвантаження потоку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 та IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "Лише IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "Лише IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "Вхідний пристрій" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -"Вхідний IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP із " -"типами %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, позначка %{mark.val}}%{helper?, помічник " -"%{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Вхідний трафік" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "Внутрішня IP-адреса" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "Внутрішній порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "Внутрішня зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "Неприпустима позначка DHCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "Неприпустиме значення обмеження" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "Обмеження блоку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "Обмеження повідомлень журналу" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "Обмеження зіставляння" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" @@ -582,74 +685,79 @@ msgstr "" "Обмеження зіставляння до %{limit.num} пакетів на %{limit." "unit}%{limit.burst? блок %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Увімкнено обмежене маскування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "Обмеження зіставляння трафіку із вказаною швидкістю." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "IP-адреса джерела зворотної петлі" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" "MASQUERADE - Автоматично переписувати на IP-адресу вихідного інтерфейсу" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "Обмежування MSS" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "Підміна" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "Зіставляти" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "Зіставляти DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "Зіставляти ICMP типу" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "Зіставляти пристрою" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" "Зіставляння переспрямованого трафіку, спрямованого на вказану IP-адресу." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" "Зіставляння переспрямованого трафіку, спрямованого на вказаний порт " "призначення або діапазон портів." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "Зіставляння переспрямованого трафіку від цієї IP-адреси або діапазону." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" "Зіставляння переспрямованого трафіку, що походить із заданого порту джерела " "або діапазону портів." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "Зіставляти помічнику" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" @@ -657,32 +765,40 @@ msgstr "" "Зіставляти вхідний трафік, спрямований на заданий порт призначення або " "діапазон портів цього вузла" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "Зіставляти позначці" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" "Зіставляти трафік за допомогою вказаного помічника відслідковування з'єднань." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" "Зіставляти вказаній позначці брандмауера або діапазону різних позначок." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" "Зіставляння переспрямованого трафіку за допомогою вказаного вихідного " "мережевого пристрою." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "Зіставляти трафік із вказаною позначкою DSCP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." @@ -691,22 +807,22 @@ msgstr "" "збільшується на одиницю щоразу, коли вказане вище обмеження не досягнуто, аж " "до цього числа." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "Понеділок" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "Дні місяця" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "Правила NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." @@ -714,26 +830,40 @@ msgstr "" "Правила NAT дозволяють тонко контролювати IP-адресу джерела, що " "використовується для вихідного чи переспрямованого трафіку." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "Назва" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Не повністю сумісно з QoS / SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "Зіставляти тільки вхідний трафік, спрямований на вказану IP-адресу." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "Зіставляти тільки вхідний трафік від цих MAC-адрес." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "Зіставляти тільки вхідний трафік від цього IP чи діапазону." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" @@ -741,28 +871,40 @@ msgstr "" "Зіставляти тільки вхідний трафік, що виникає на заданому порту джерела або " "діапазоні портів вузла клієнта" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "Вихідний пристрій" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "Вихідна зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Вихідний трафік" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" "Передавання додаткових аргументів для IPTables. Використовуйте з обережністю!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -776,12 +918,16 @@ msgstr "" "особливою обережністю, оскільки невірні значення можуть призвести до " "порушення набору правил брандмауера, повністю відкриваючи всі служби." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "Переспрямовування портів" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." @@ -789,74 +935,88 @@ msgstr "" "Переспрямовування портів дозволяє віддаленим комп'ютерам з Інтернету " "підключатися до певного комп'ютера або служби у приватній мережі." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Протокол" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" "Переспрямувати відповідний вхідний трафік на заданий порт внутрішнього вузла" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "Переспрямувати відповідний вхідний трафік на заданий внутрішній вузол" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "Необхідна апаратна підтримка NAT. Упроваджено принаймні для mt7621" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Необхідна апаратна підтримка NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "Обмежити підміну заданими підмережами призначення" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "Обмежити підміну заданими підмережами джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "Обмежити сімейство протоколів" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "IP-адреса для перезапису" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "Перезаписати відповідний трафік на вказану IP-адресу джерела." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" "Перезаписати відповідний трафік на вказаний порт джерела або діапазон портів." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "Порт для перезапису" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "Розвантаження маршрутизації/NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - Перезаписати на вказану IP-адресу джерела або порт" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "Субота" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "Установити позначку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." @@ -865,40 +1025,40 @@ msgstr "" "значення[/маска]. Якщо вказано маску, то змінюються лише ті біти, які " "встановлені в масці." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "Програмне розвантаження для маршрутизації/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "Програмне розвантаження потоку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "IP-адреса джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "MAC-адреса джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "Адреса джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "Порт джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "Зона джерела" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." @@ -906,7 +1066,7 @@ msgstr "" "Визначає, чи слід прив'язувати це правило трафіку до певного вхідного або " "вихідного мережевого пристрою." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." @@ -914,32 +1074,36 @@ msgstr "" "Визначає, чи використовувати зовнішню або внутрішню IP-адресу для відбитого " "трафіку." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "Дата початку (рррр-мм-дд)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "Час початку (гг:хх:сс)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "Дата зупинки (рррр-мм-дд)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "Час зупинки (гг:хх:сс)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "Неділя" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." @@ -947,7 +1111,7 @@ msgstr "" "Для належного функціонування LuCI потрібно змінити існуючу конфігурацію " "брандмауера." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -955,8 +1119,8 @@ msgstr "" "Брандмауер створює зони поверх ваших мережевих інтерфейсів для управління " "потоком мережевого трафіку." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -973,7 +1137,7 @@ msgstr "" "від LAN до WAN не означає, що є також дозвіл спрямовувати від WAN " "до LAN." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -987,22 +1151,30 @@ msgstr "" "спрямовування трафіку між різними мережами в межах зони. Пункт Покриті " "мережі визначає, які доступні мережі є членами цієї зони." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "Четвер" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "Часові обмеження" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "Час в UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Для цього правила ввімкнено обмеження часу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Часове обмеження" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item.ival}
}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" "До %{dest}%{dest_device?, через інтерфейс %{dest_device}}%{dest_ip?, IP-адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" +"var>}%{dest_ip?, IP-адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" "До %{dest}%{dest_ip?, IP-адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" +"var>}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "Помічник відслідковування" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "Правила трафіку" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" "Правила трафіку визначають політику для пакетів, що пересилаються між " "різними зонами, наприклад, відхиляти трафік між певними вузлами або відкрити " "порти WAN на маршрутизаторі." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "Вівторок" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "Не вдалося зберегти вміст: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" "Невідомий або не інстальований помічник відслідковування з'єднань \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "NAT без назви" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "Переспрямовування без назви" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "Правило без назви" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "Зона без назви" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "Нерозпізнаний протокол" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -"Після натискання кнопки \"Продовжити\" розділи \"redirect\" з цільовою \"SNAT" -"\" буде перетворено на розділи \"nat\", і брандмауер буде перезапущено для " -"застосування оновленої конфігурації." +"Після натискання кнопки \"Продовжити\" розділи \"redirect\" з цільовою " +"\"SNAT\" буде перетворено на розділи \"nat\", і брандмауер буде перезапущено " +"для застосування оновленої конфігурації." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "Використовувати зовнішню IP-адресу" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "Використовувати внутрішню IP-адресу" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" "Використовуйте цей параметр для класифікації трафіку зон за мережевими " -"пристроями raw, які не управляються через uci." +"пристроями raw, які не управляються через uci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." @@ -1133,303 +1321,311 @@ msgstr "" "Використовуйте цей параметр для класифікації трафіку зон за підмережею " "джерела чи призначення замість мереж або пристроїв." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "Потрібна дійсна позначка брандмауера" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "Середа" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "Дні тижня" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "XOR позначки брандмауера" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "XOR позначки" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "Зона ⇒ Переспрямовування" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "Зони" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "приймати" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "будь-який" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "будь-якої зони" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "застосувати позначку брандмауера" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "призначити помічника відслідковування з'єднань" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "день" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "не переписувати" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "не відстежувати" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "опускати" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "година" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "хвилина" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "відхиляти" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "секунду" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "цього пристрою" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "ця нова зона" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "необмежено" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "невизначено" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "дійсна розначка брандмауера" +msgstr "дійсна позначка брандмауера" -#~ msgid "%s in %s" -#~ msgstr "%s у %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s із %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s у %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d пакетів за %s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "" -#~ "%d пакетів за %s, підряд %d пакетів" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s з лімітом %s" - -#~ msgid "Accept forward" -#~ msgstr "Приймати переспрямовування" - -#~ msgid "Accept input" -#~ msgstr "Приймати вхідний" - -#~ msgid "Accept output" -#~ msgstr "Приймати вихідний" - -#~ msgid "Discard forward" -#~ msgstr "Відкидати переспрямовування" - -#~ msgid "Discard input" -#~ msgstr "Відкидати вхідний" - -#~ msgid "Discard output" -#~ msgstr "Відкидати вихідний" - -#~ msgid "Do not track forward" -#~ msgstr "Не відслідковувати переспрямовування" - -#~ msgid "Do not track input" -#~ msgstr "Не відслідковувати вхідний" - -#~ msgid "Do not track output" -#~ msgstr "Не відслідковувати вихідний" - -#~ msgid "Forward to" -#~ msgstr "переспрямовування до" - -#~ msgid "From %s in %s" -#~ msgstr "%s у %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "%s у %s з джерелом %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "%s у %s з джерелом %s та %s" - -#~ msgid "From %s on this device" -#~ msgstr "Від %s на цьому пристрої" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "Від %s на цьому пристрої з джерелом %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "Від %s на цьому пристрої з джерелом %s та %s" - -#~ msgid "IP" -#~ msgstr "IP-адреса" - -#~ msgid "IP range" -#~ msgstr "Діапазон IP" - -#~ msgid "IPs" -#~ msgstr "IP-адреси" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC-адреса" - -#~ msgid "MACs" -#~ msgstr "MAC-адреси" - -#~ msgid "Network" -#~ msgstr "Мережа" - -#~ msgid "Refuse forward" -#~ msgstr "Відхиляти переспрямовування" - -#~ msgid "Refuse input" -#~ msgstr "Відхиляти вхідний" - -#~ msgid "Refuse output" -#~ msgstr "Відхиляти вихідний" - -#~ msgid "To %s at %s on this device" -#~ msgstr "%s на %s цього пристрою" - -#~ msgid "To %s in %s" -#~ msgstr "%s у %s" - -#~ msgid "To %s on this device" -#~ msgstr "%s на цього пристрою" - -#~ msgid "To %s, %s in %s" -#~ msgstr "%s, %s у %s" - -#~ msgid "Via %s" -#~ msgstr "Через %s" - -#~ msgid "Via %s at %s" -#~ msgstr "Через %s на %s" - -#~ msgid "any host" -#~ msgstr "будь-який вузол" - -#~ msgid "any router IP" -#~ msgstr "будь-який IP роутера" - -#~ msgid "not" -#~ msgstr "не" - -#~ msgid "port" -#~ msgstr "порт" - -#~ msgid "ports" -#~ msgstr "порти" - -#~ msgid "type" -#~ msgstr "типом" - -#~ msgid "types" -#~ msgstr "типами" - -#~ msgid "Force connection tracking" -#~ msgstr "Примусове відслідковування з'єднань" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Програмне розвантаження для маршрутизації/NAT" #~ msgid "" -#~ "Prevent the installation of NOTRACK rules which would bypass " -#~ "connection tracking." +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "Запобігати встановленню правил NOTRACK, які могли б обійти " -#~ "відслідковування з'єднань." +#~ "Переспрямовування IPv4%{proto?, протокол %{proto#%{next?, }%{item." +#~ "name}}}%{mark?, позначка %{mark.val}}" -#~ msgid "Disable" -#~ msgstr "Вимкнути" - -#~ msgid "Restart Firewall" -#~ msgstr "Перезавантажити брандмауер" - -#~ msgid "Rule is disabled" -#~ msgstr "Правило вимкнено" - -#~ msgid "Rule is enabled" -#~ msgstr "Правило ввімкнено" +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Вхідний IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP із типами %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, позначка %{mark.val}}%{helper?, помічник %{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/en/firewall.po b/luci-app-firewall/po/ur/firewall.po similarity index 61% rename from luci-app-firewall/po/en/firewall.po rename to luci-app-firewall/po/ur/firewall.po index f595f3f81..96451deb5 100644 --- a/luci-app-firewall/po/en/firewall.po +++ b/luci-app-firewall/po/ur/firewall.po @@ -1,369 +1,424 @@ -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"PO-Revision-Date: 2021-01-07 17:03+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.4.1-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" -msgstr "Action" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "Destination address" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "Destination port" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" -msgstr "Destination zone" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "Drop invalid packets" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" -msgstr "Enable SYN-flood protection" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" -msgstr "External port" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" -msgstr "Firewall" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 -msgid "Forward" -msgstr "Forward" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 -msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" -msgstr "Input" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" -msgstr "Internal IP address" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" -msgstr "Internal port" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" -msgstr "MSS clamping" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" -msgstr "Masquerading" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" -msgstr "Name" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" -msgstr "Output" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -656,205 +808,194 @@ msgid "" "all services." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 -msgid "Protocol" -msgstr "Protocol" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -"Redirect matched incoming traffic to the given port on the internal host" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" -msgstr "Redirect matched incoming traffic to the specified internal host" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" msgstr "" -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" -msgstr "Source IP address" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" -msgstr "Source address" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" -msgstr "Source port" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" -msgstr "Source zone" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -864,7 +1005,7 @@ msgid "" "not imply a permission to forward from wan to lan as well." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -873,22 +1014,30 @@ msgid "" "networks specifies which available networks are members of this zone." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}
}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" -msgstr "Zones" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" -msgstr "accept" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" -msgstr "any" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" -msgstr "drop" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 -msgid "reject" -msgstr "reject" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "" diff --git a/luci-app-firewall/po/vi/firewall.po b/luci-app-firewall/po/vi/firewall.po index 217eafe70..58c63f472 100644 --- a/luci-app-firewall/po/vi/firewall.po +++ b/luci-app-firewall/po/vi/firewall.po @@ -1,12 +1,10 @@ -# luci-fw.pot -# generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2020-01-14 15:22+0000\n" -"Last-Translator: Franco Castillo \n" +"PO-Revision-Date: 2024-07-13 20:44+0000\n" +"Last-Translator: phannhanhn201 \n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -14,359 +12,469 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11-dev\n" +"X-Generator: Weblate 5.7-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?Được chuyển tiếp:Đến}:Ra} %{ipv6?%{ipv4?IPv4 và " +"IPv6:IPv6}:IPv4}%{proto?, giao thức " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP với các loại %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}" +"}}%{helper?, helper %{helper.inv?%{helper.val}:" +"%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" -msgstr "" +msgstr "-- thêm IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" -msgstr "" +msgstr "-- thêm MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"Chấp nhận %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "" +msgstr "Ngăn chặn viết lại nguồn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"Chuyển hướng to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? cổng%{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"Bỏ %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"Gắn DSCP phân loại %{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"Gán conntrack trợ giúp%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"%{set_mark?Gán:XOR} đánh dấu trường " +"lửa%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" -msgstr "" +msgstr "Tự động viết lại IP nguồn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"Không theo dõi %{src?%{dest?forward:" +"input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"Từ chối %{src?%{dest?tiến về:đầu vào}:đầu " +"ra}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"Viết lại tĩnh thành nguồn %{snat_ip?IP " +"%{snat_ip}} %{snat_port?cổng %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "Phải chỉ định địa chỉ IP viết lại!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "ACCEPT - Vô hiệu hóa viết lại địa chỉ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" msgstr "Hành động" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" +"Các đối số thô iptables bổ sung để phân loại lưu lượng đích vùng, " +"ví dụ: -p tcp --dport 443 để chỉ khớp lưu lượng HTTPS đi ra." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" +"Các đối số thô iptables bổ sung để phân loại lưu lượng nguồn vùng, " +"ví dụ: -p tcp --sport 443 để chỉ khớp lưu lượng HTTPS đến." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Họ địa chỉ, địa chỉ IP nội bộ phải khớp" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "Họ địa chỉ, địa chỉ nguồn, địa chỉ đích, địa chỉ IP viết lại phải khớp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" -msgstr "" +msgstr "Cài đặt Nâng cao" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "Cho phép lưu lượng \"không hợp lệ\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "" +msgstr "Cho phép tiến về từ vùng nguồn:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" -msgstr "" +msgstr "Cho phép tiến về đến vùng đích:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" -msgstr "" +msgstr "Bất kỳ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" -msgstr "" +msgstr "Bất kỳ ngày nào" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" +"Áp dụng phép XOR bit cho giá trị đã cho và giá trị đánh dấu hiện có trên các " +"kết nối đã thiết lập. Định dạng là value[/mask]. Nếu có mặt nạ được chỉ " +"định, thì các bit được thiết lập trong mặt nạ sẽ bị gán giá trị 0." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." -msgstr "" +msgstr "Áp dụng lớp hoặc giá trị DSCP đã cho cho các kết nối đã thiết lập." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." -msgstr "" +msgstr "Gán trình theo dõi kết nối đã chỉ định cho lưu lượng khớp." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" -msgstr "" +msgstr "Gán tự động trình theo dõi kết nối" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" msgstr "" +"Tự động gán trình theo dõi kết nối dựa trên giao thức và cổng lưu lượng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Bình luận" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "" +msgstr "Cài đặt Conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "" +msgstr "Trình theo dõi kết nối" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "" +msgstr "Nội dung đã được lưu." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" -msgstr "" +msgstr "Tiếp tục" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Bộ đếm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "Thiết bị được bao phủ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" -msgstr "" +msgstr "Mạng được bao phủ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "Mạng con được bao phủ" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" -msgstr "" +msgstr "Quy tắc Tùy chỉnh" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" +"Quy tắc tùy chỉnh cho phép bạn thực thi các lệnh iptables tùy ý mà không " +"được bao phủ bởi khung tường lửa. Các lệnh được thực thi sau mỗi lần khởi " +"động lại tường lửa, ngay sau khi tập luật mặc định đã được tải." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" -msgstr "" +msgstr "Phân loại DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "Đánh dấu DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "" +msgstr "Đánh dấu DSCP bắt buộc" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" -msgstr "Địa chỉ điểm đến" +msgstr "Địa chỉ đích" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" -msgstr "Cổng điểm đến" +msgstr "Cổng đích" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" -msgstr "Điểm đến" +msgstr "Vùng điểm đến" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "" +msgstr "Tên thiết bị" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" +"Không cài đặt các quy tắc bổ sung để từ chối giao thông chuyển tiếp có trạng " +"thái conntrack invalid. Điều này có thể cần thiết cho các thiết lập " +"tuyến đường không đối xứng phức tạp." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "Bỏ qua nhưng gói không hợp lý" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" -msgstr "Kích hoạt" +msgstr "Bật lên" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" -msgstr "" +msgstr "Bật NAT Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" -msgstr "SYN-flood bảo vệ " +msgstr "Kích hoạt bảo vệ SYN-flood" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" -msgstr "" +msgstr "Bật ghi nhật ký trên vùng này" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Bật chuyển đổi địa chỉ mạng và cổng IPv4 (NAT4 hoặc NAPT4) cho giao thông ra " +"ngoài trên vùng này. Thông thường, điều này được kích hoạt trên vùng " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Bật chuyển đổi địa chỉ mạng và cổng IPv6 (NAT6 hoặc NAPT6) cho giao thông ra " +"ngoài trên vùng này." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Kích Hoạt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Bật theo dõi số gói tin và số byte cho bộ sưu tập." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "Đang chờ: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "" +"Chọn rõ ràng các trình hỗ trợ theo dõi kết nối được phép cho giao thông vùng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" -msgstr "" +msgstr "Địa chỉ IP bên ngoài" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "External port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" -msgstr "" +msgstr "Các tham số bổ sung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" -msgstr "" +msgstr "Các tham số đích bổ sung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "" +msgstr "Các tham số iptables bổ sung" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" -msgstr "" +msgstr "Các tham số nguồn bổ sung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Gia đình" #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "Firewall" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" -msgstr "" +msgstr "Tường lửa - Quy tắc Tùy chỉnh" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Tường lửa - Bộ IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" -msgstr "" +msgstr "Tường lửa - Quy tắc NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "" +msgstr "Tường lửa - Chuyển tiếp Cổng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "" +msgstr "Tường lửa - Quy tắc Giao thông" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" -msgstr "" +msgstr "Tường lửa - Cài đặt Vùng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" +msgstr "Di cư cấu hình tường lửa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" -msgstr "" +msgstr "Forward" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" +"Chuyển tiếp %{ipv6?%{ipv4?IPv4IPv6:IPv6}:IPv4}%{proto?, giao thức %{proto#%{next?, }%{item.name}" +"}}%{mark?, đánh dấu %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" -msgstr "" +msgstr "Thứ 6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"Từ %{src}%{src_device?, giao diện %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, cổng %{src_port#%{next?, }" +"%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" +"Từ %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" +"Từ %{src}%{src_ip?, Địa chỉ IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, cổng %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" +msgstr "Các cài đặt chung" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Cấp quyền truy cập vào cấu hình tường lửa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" -msgstr "" +msgstr "Xả luồng phần cứng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (phạm vi)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Các bộ IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/Mạng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/Mạng/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" -msgstr "" +msgstr "IPv4 và IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" -msgstr "" +msgstr "Chỉ IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" -msgstr "" +msgstr "Chỉ IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" -msgstr "" +msgstr "Thiết bị đầu vào" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Bao gồm Tệp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" +"Đầu vào %{ipv6?%{ipv4?IPv4IPv6:IPv6}:" +"IPv4}%{proto?, giao thức %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"với các loại %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, đánh dấu %{mark.val}}%{helper?, trợ giúp " +"%{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Kích thước băm Ban đầu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "Input" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" -msgstr "Internal address" +msgstr "Địa chỉ IP nội bộ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" -msgstr "External port" +msgstr "Cổng nội bộ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" +msgstr "Vùng nội bộ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "Đánh dấu DSCP không hợp lệ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" -msgstr "" +msgstr "Giá trị giới hạn không hợp lệ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Tên thiết lập không hợp lệ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" -msgstr "" +msgstr "Số lượng tắt đột ngột" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" -msgstr "" +msgstr "Giới hạn tin nhắn nhật ký" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" -msgstr "" +msgstr "Khớp giới hạn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" +"Giới hạn khớp %{limit.num} gói tin mỗi %{limit.unit}%{limit.burst? với cú pháp %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Bật masquerading có giới hạn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "" +msgstr "Giới hạn khớp lưu lượng với tốc độ được chỉ định." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" -msgstr "" +msgstr "Địa chỉ IP nguồn Loopback" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "" +msgstr "MASQUERADE - Tự động viết lại thành địa chỉ IP giao diện ra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSS Clamping" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" -msgstr "" +msgstr "Masquerading" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" -msgstr "" +msgstr "Khớp" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "" +msgstr "Khớp DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" -msgstr "" +msgstr "Khớp loại ICMP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" -msgstr "" +msgstr "Khớp thiết bị" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." -msgstr "" +msgstr "Khớp lưu lượng chuyển tiếp được chỉ định đến địa chỉ IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "" +"Khớp lưu lượng chuyển tiếp được chỉ định đến cổng đích hoặc khoảng cổng." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." -msgstr "" +msgstr "Khớp lưu lượng chuyển tiếp từ địa chỉ IP này hoặc khoảng IP." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "" +"Khớp lưu lượng chuyển tiếp xuất phát từ cổng nguồn hoặc khoảng cổng được chỉ " +"định." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" -msgstr "" +msgstr "Khớp trợ giúp" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 -msgid "Match mark" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 -msgid "Match traffic using the specified connection tracking helper." -msgstr "" +"Khớp lưu lượng đến đích được chỉ định đến cổng đích hoặc khoảng cổng trên " +"máy chủ này" #: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Khớp nhãn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Khớp lưu lượng sử dụng trình hỗ trợ theo dõi kết nối đã chỉ định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." -msgstr "" +msgstr "Khớp nhãn tường lửa cụ thể hoặc một dải nhãn khác nhau." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." -msgstr "" +msgstr "Khớp lưu lượng chuyển tiếp sử dụng thiết bị mạng đầu cuối đã chỉ định." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." -msgstr "" +msgstr "Khớp lưu lượng mang nhãn DSCP đã chỉ định." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Số lượng tối đa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Độ dài tối đa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" +"Số lượng gói ban đầu tối đa để khớp: số này sẽ được nạp lại một lần mỗi khi " +"không đạt đến giới hạn được chỉ định ở trên, lên tới số này." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" -msgstr "" +msgstr "Thứ 2" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" -msgstr "" +msgstr "Tháng Ngày" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "" +msgstr "Quy tắc NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "" +"Các quy tắc NAT cho phép kiểm soát chi tiết địa chỉ IP nguồn được sử dụng " +"cho lưu lượng đi ra hoặc chuyển tiếp." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" +msgstr "Tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Không hoàn toàn tương thích với QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." -msgstr "" +msgstr "Chỉ khớp lưu lượng đến địa chỉ IP cụ thể." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." -msgstr "" +msgstr "Chỉ khớp lưu lượng đến từ các địa chỉ MAC này." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." -msgstr "" +msgstr "Chỉ khớp lưu lượng đến từ địa chỉ IP hoặc dải cụ thể này." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" +"Chỉ khớp lưu lượng đến từ cổng nguồn hoặc dải cổng cụ thể trên máy khách" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" -msgstr "" +msgstr "Thiết bị đầu cuối ra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" -msgstr "" +msgstr "Vùng đầu cuối ra" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "Output" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Khớp trường gói tin" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Các trường gói tin để khớp.
Cú pháp: hướng_loạitruong. Ví dụ: " +"src_port, dest_net.
Hướng: src, dst. Loại dữ " +"liệu: ip, port, mac, net, set.
Tiền tố hướng là tùy chọn." +"
*Ghi chú: loại dữ liệu set không được hỗ trợ trong fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Truyền các đối số bổ sung cho iptables. Sử dụng cẩn thận!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -659,169 +910,203 @@ msgid "" "invalid values could render the firewall ruleset broken, completely exposing " "all services." msgstr "" +"Việc truyền các đối số iptables nguyên thủy vào các quy tắc phân loại lưu " +"lượng nguồn và đích cho phép khớp các gói dựa trên các tiêu chí khác với " +"giao diện hoặc mạng con. Các tùy chọn này nên được sử dụng cẩn thận vì các " +"giá trị không hợp lệ có thể làm hỏng tập luật tường lửa, hoàn toàn tiết lộ " +"tất cả các dịch vụ." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Đường dẫn đến tệp chứa CIDR, mạng con, IP máy chủ, v.v.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" -msgstr "" +msgstr "Chuyển tiếp cổng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." msgstr "" +"Chuyển tiếp cổng cho phép các máy tính từ xa trên Internet kết nối tới một " +"máy tính cụ thể hoặc dịch vụ trong mạng LAN riêng." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Dải cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "Giao thức" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" -msgstr "" +msgstr "Chuyển hướng lưu lượng đến cổng được chỉ định trên máy chủ nội bộ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Chuyển hướng lưu lượng đến máy chủ nội bộ được chỉ định" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Tham chiếu tới tập hợp ngoại vi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Yêu cầu hỗ trợ NAT phần cứng." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" -msgstr "" +msgstr "Hạn chế Masquerading cho các mạng con đích được chỉ định" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" -msgstr "" +msgstr "Hạn chế Masquerading cho các mạng con nguồn được chỉ định" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "" +msgstr "Giới hạn địa chỉ gia đình" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" -msgstr "" +msgstr "Ghi đè địa chỉ IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." -msgstr "" +msgstr "Ghi đè lưu lượng khớp với địa chỉ IP nguồn được chỉ định." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." -msgstr "" +msgstr "Ghi đè lưu lượng khớp với cổng nguồn hoặc dải cổng được chỉ định." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" -msgstr "" +msgstr "Ghi đè cổng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "" +msgstr "Bật tính năng Offloading cho định tuyến/NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - Ghi đè lên địa chỉ IP hoặc cổng nguồn cụ thể" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" -msgstr "" +msgstr "Thứ 7" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "" +msgstr "Đặt đánh dấu" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" +"Đặt giá trị đánh dấu được chỉ định cho các kết nối đã thiết lập. Định dạng " +"là value[/mask]. Nếu có chỉ định mặt nạ, chỉ những bit được đặt trong mặt nạ " +"mới được thay đổi." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "" +msgstr "Xả luồng dựa trên phần mềm" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "Đỉa chỉ MAC nguồn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" -msgstr "" +msgstr "Địa chỉ MAC nguồn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" -msgstr "Đỉa chỉ MAC nguồn" +msgstr "Đỉa chỉ nguồn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" -msgstr "Cổng nguồn" +msgstr "Source port" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 -#, fuzzy +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" -msgstr "Cổng nguồn" +msgstr "Source zone" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "" +"Xác định xem có liên kết luật lưu lượng này với thiết bị mạng đầu vào hoặc " +"đầu ra cụ thể hay không." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." msgstr "" +"Xác định xem có sử dụng địa chỉ IP ngoại vi hoặc nội bộ cho lưu lượng phản " +"chiếu hay không." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" -msgstr "" +msgstr "Ngày bắt đầu (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Thời gian bắt đầu (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" -msgstr "" +msgstr "Ngày kết thúc (yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Thời gian kết thúc (hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Phương pháp lưu trữ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" -msgstr "" +msgstr "Chủ Nhật" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "" +"Cấu hình tường lửa hiện có cần được thay đổi để LuCI hoạt động đúng cách." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." @@ -829,8 +1114,8 @@ msgstr "" "The firewall tạo zones trên giao diện mạng lưới để điều triển sự dòng lưu " "thông của mạng." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -839,8 +1124,14 @@ msgid "" "rule is unidirectional, e.g. a forward from lan to wan does " "not imply a permission to forward from wan to lan as well." msgstr "" +"Các tùy chọn dưới đây kiểm soát chính sách chuyển tiếp giữa vùng này (%s) và " +"các vùng khác. Vùng đích áp dụng cho lưu lượng được chuyển tiếp " +"xuất phát từ %q. Vùng nguồn khớp lưu lượng được " +"chuyển tiếp từ các vùng khác đích đến %q. Quy tắc chuyển " +"tiếp là một chiều, ví dụ: một chuyển tiếp từ lan đến wan không bao gồm quyền chuyển tiếp từ wan đến lan." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -848,23 +1139,36 @@ msgid "" "forwarded traffic between different networks within the zone. Covered " "networks specifies which available networks are members of this zone." msgstr "" +"Phần này xác định các thuộc tính chung của %q. Các tùy chọn input " +"và output đặt chính sách mặc định cho lưu lượng nhập và xuất khỏi " +"vùng này trong khi tùy chọn forward mô tả chính sách cho lưu lượng " +"chuyển tiếp giữa các mạng khác nhau trong vùng. Mạng bao gồm chỉ " +"định các mạng có sẵn là thành viên của vùng này." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" -msgstr "" +msgstr "Thứ 5" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" -msgstr "" +msgstr "Hạn chế Thời gian" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" -msgstr "" +msgstr "Thời gian theo UTC" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Hạn chế thời gian được bật cho quy tắc này" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Quá thời gian" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" +"Đến %{dest}%{dest_device?, giao diện %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, cổng %{dest_port#%{next?, }" +"%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" +"Đến %{dest}%{dest_device?, qua giao diện %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, cổng " +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" +"Đến %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, cổng %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" -msgstr "" +msgstr "Bộ trợ giúp theo dõi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" -msgstr "" +msgstr "Quy tắc Lưu lượng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" +"Quy tắc giao thông xác định các chính sách cho các gói tin đi giữa các vùng " +"khác nhau, ví dụ như từ chối giao thông giữa các máy chủ nhất định hoặc mở " +"cổng WAN trên bộ định tuyến." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" -msgstr "" +msgstr "Thứ 3" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" -msgstr "" +msgstr "Không thể lưu nội dung: %s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Đơn vị: giây. Mặc định 0 có nghĩa là mục được thêm vào bộ vĩnh " +"viễn.
Tối đa: 2147483 giây." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "" +msgstr "Trợ giúp conntrack không xác định hoặc chưa cài đặt \"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" -msgstr "" +msgstr "NAT không có tên" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" -msgstr "" +msgstr "Chuyển tiếp không có tên" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" -msgstr "" +msgstr "Quy tắc không có tên" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Bộ không có tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" -msgstr "" +msgstr "Vùng không có tên" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "Giao thức không được nhận dạng" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" +"Khi nhấn \"Tiếp tục\", các phần \"chuyển hướng\" với mục tiêu \"SNAT\" sẽ " +"được chuyển đổi thành các phần \"nat\" và tường lửa sẽ được khởi động lại để " +"áp dụng cấu hình đã cập nhật." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" -msgstr "" +msgstr "Sử dụng địa chỉ IP bên ngoài" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" -msgstr "" +msgstr "Sử dụng địa chỉ IP nội bộ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Sử dụng ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "" +"Sử dụng tùy chọn này để phân loại lưu lượng vùng theo thiết bị mạng thô, " +"không được quản lý bởi uci." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "" +"Sử dụng tùy chọn này để phân loại lưu lượng vùng theo mạng con nguồn hoặc " +"đích thay vì mạng hoặc thiết bị." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "" +msgstr "Yêu cầu dấu tường lửa hợp lệ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" -msgstr "" +msgstr "Thứ 4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" -msgstr "" +msgstr "Ngày trong tuần" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" -msgstr "" +msgstr "Dấu tường lửa XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" -msgstr "" +msgstr "Dấu XOR" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Thiết bị của bạn không chạy firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Thiết bị của bạn chạy firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" +msgstr "Vùng ⇒ Chuyển tiếp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Các vùng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." msgstr "" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 -msgid "Zones" -msgstr "Zones" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "chấp nhận" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" -msgstr "" +msgstr "Bất kì" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" -msgstr "" +msgstr "bất kỳ vùng nào" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "bất kỳ/tất cả" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" -msgstr "" +msgstr "áp dụng dấu tường lửa" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" -msgstr "" +msgstr "gán trợ giúp conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "Tự động hóa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bản đồ bit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bản đồ bit chỉ dành cho ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" -msgstr "" +msgstr "ngày" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Địa chỉ MAC đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Mạng (con) đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Cổng đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "*dest_set: ipset đích*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" -msgstr "" +msgstr "không viết lại" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" -msgstr "" +msgstr "không theo dõi" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "drop" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 hỗ trợ tham chiếu và tạo các bộ IP để đơn giản hóa việc khớp các " +"danh sách địa chỉ lớn mà không cần tạo một quy tắc cho mỗi mục để khớp. Phạm " +"vi cổng trong ipsets không được hỗ trợ bởi firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "từ cổng đến cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "băm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" -msgstr "" +msgstr "giờ" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Địa chỉ IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Để sử dụng với các kiểu dữ liệu Khớp: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "danh sách" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Địa chỉ MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "*macaddr|ip[/cidr]*
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" -msgstr "" +msgstr "*phút*" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "Không chấp nhận" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" -msgstr "" +msgstr "giây" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: ipset nguồn*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Địa chỉ MAC nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Mạng (con) nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Cổng nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" -msgstr "" +msgstr "thiết bị này" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" -msgstr "" +msgstr "vùng mới này" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "không giới hạn" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" -msgstr "" +msgstr "không xác định" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "lên đến 65536 mục." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "" +msgstr "dấu tường lửa hợp lệ" -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "MAC" -#~ msgstr "MAC" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Bật tính năng Offloading dựa trên phần mềm cho định tuyến/NAT" diff --git a/luci-app-firewall/po/yua/firewall.po b/luci-app-firewall/po/yua/firewall.po new file mode 100644 index 000000000..1dc338868 --- /dev/null +++ b/luci-app-firewall/po/yua/firewall.po @@ -0,0 +1,1430 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-08-26 11:25+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: yua\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.7.1-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/zh_Hans/firewall.po b/luci-app-firewall/po/zh_Hans/firewall.po index 54366b246..f7b5a5cb3 100644 --- a/luci-app-firewall/po/zh_Hans/firewall.po +++ b/luci-app-firewall/po/zh_Hans/firewall.po @@ -1,119 +1,123 @@ -# -# Yangfl , 2017, 2018. -# Zheng Qian , 2019. -# msgid "" msgstr "" "Project-Id-Version: \n" -"PO-Revision-Date: 2020-02-19 20:00+0000\n" -"Last-Translator: xiazhang \n" -"Language-Team: Chinese (Simplified) \n" +"PO-Revision-Date: 2024-10-26 14:12+0000\n" +"Last-Translator: try496 \n" +"Language-Team: Chinese (Simplified Han script) \n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11\n" +"X-Generator: Weblate 5.8.2-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" "%{src?%{dest?转发:入站}:出站} %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, 协议 %{proto#" -"%{next?, }%{item.types?%{item.name}" -"具有类型 %{item.types#%{next?, }%{item}} 的 ICMP:%{item.name}}}}%{mark?, 标记 %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, 助手 %{helper.inv?%{helper.val}:" -"%{helper.val}}}" +"var>:IPv6}:IPv4}%{proto?, 协议 " +"%{proto#%{next?, }%{item.types?%{item." +"name}具有类型 %{item.types#%{next?, }%{item}" +"} 的 ICMP:%{item.name}}}}%{mark?, 标记 " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp." +"val}:%{dscp.val}}}%{helper?, 助手 %{helper.inv?%{helper.val}" +":%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- 添加 IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- 添加 MAC --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "接受 %{src?%{dest?转发:入站}:出站}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" msgstr "防止重写源" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" "转发 至 %{dest}%{dest_ip? IP %{dest_ip}" "}%{dest_port? 端口 %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "丢弃 %{src?%{dest?转发:入站}:出站}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "分配 DSCP 分类 %{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" "分配 conntrack 助手 %{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" -"%{set_mark?分配:异或} 防火墙标记 " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?分配:异或} 防火墙标记 " +"%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" msgstr "自动重写 源 IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" "不跟踪 %{src?%{dest?转发:入站}:出站}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "拒绝 %{src?%{dest?转发:入站}:出站}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" @@ -121,285 +125,338 @@ msgstr "" "静态重写 到源 %{snat_ip?IP %{snat_ip}} %{snat_port?端口 %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 msgid "A rewrite IP must be specified!" msgstr "必须指定重写 IP!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 msgid "ACCEPT - Disable address rewriting" msgstr "接受 - 禁用地址重写" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 msgid "Action" -msgstr "动作" +msgstr "操作" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" -"附加 iptables 参数对区域出流量分类。如:-p tcp --dport 443 仅匹配出站 HTTPS 流量。" +"用于对区域目标流量进行分类的额外 iptables 参数。如:-p tcp --" +"dport 443 表示仅匹配出站 HTTPS 流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" -"附加 iptables 参数对区域入流量分类。如:-p tcp --sport 443 仅匹配入站 HTTPS 流量。" +"用于对区域源流量进行分类的额外 iptables 参数。如:-p tcp --" +"sport 443 表示仅匹配入站 HTTPS 流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "地址族、内部 IP 族必须相匹配" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "地址族、源地址、目标地址、重写 IP 地址必须相匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 msgid "Advanced Settings" msgstr "高级设置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" msgstr "允许“无效”流量" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" msgstr "允许来自源区域的转发:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" msgstr "允许转发到目标区域:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "任何" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 msgid "Any day" msgstr "每天" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" -"在已建立的连接上对给定值和现有标记值进行按位异或。格式为 value[/mask]。如果指" -"定了掩码,则掩码中设置的位将归零。" +"在已建立的连接上对给定值和现有标记值进行按位异或。格式为 值[/掩码]。如果指定" +"了掩码,则掩码中设置的位将归零。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." msgstr "将给定的 DSCP 类或值应用于已建立的连接。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Assign the specified connection tracking helper to matched traffic." msgstr "将指定的连接跟踪助手分配给匹配的流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" msgstr "自动助手分配" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" -msgstr "根据流量协议和端口自动分配 conntrack 助手" +msgstr "根据流量协议和端口自动分配连接跟踪助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "注释" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "Conntrack 设置" +msgstr "连接跟踪设置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "Conntrack 助手" +msgstr "连接跟踪助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." msgstr "内容已保存。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "继续" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "计数器" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" msgstr "涵盖的设备" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" msgstr "涵盖的网络" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" msgstr "涵盖的子网" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "自定义规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " "each firewall restart, right after the default ruleset has been loaded." msgstr "" "自定义规则允许您执行不属于防火墙框架的任意 iptables 命令。每次重启防火墙时," -"在默认的规则运行后这些命令将立即执行。" +"这些命令在默认的规则运行后立即执行。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 msgid "DSCP classification" msgstr "DSCP 类别" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" msgstr "DSCP 标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" msgstr "需要 DSCP 标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Destination address" msgstr "目标地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "Destination port" msgstr "目标端口" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 msgid "Destination zone" msgstr "目标区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "Device name" -msgstr "设备名称" +msgstr "设备名" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" -"不安装额外的规则以拒绝 conntrack 状态为无效的转发流量。对复杂的非对" -"称路由这可能是必需的设置。" +"不安装额外的规则以拒绝连接跟踪状态为无效的转发流量。对复杂的非对称路" +"由这可能是必需的设置。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" msgstr "丢弃无效数据包" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 msgid "Enable" msgstr "启用" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 msgid "Enable NAT Loopback" msgstr "启用 NAT 环回" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" msgstr "启用 SYN-flood 防御" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "启用此区域的日志记录" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"为此区域的出站流量开启网络地址和端口转换 IPv4 (NAT4 或 NAPT4)。 wan区域通常开启此功能。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "为此区域出站流量开启网络地址和端口转换 IPv6 (NAT6 或 NAPT6)。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "已启用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "为该集合开启数据包和字节计数追踪。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "需要:%s" +msgstr "请输入:%s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "实验特性。与 QoS/SQM 不完全兼容。" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" msgstr "为区域流量明确选择允许的连接跟踪助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "External IP address" msgstr "外部 IP 地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "External port" msgstr "外部端口" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 msgid "Extra arguments" msgstr "额外参数" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" msgstr "额外的目标参数" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" msgstr "额外的 iptables 参数" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" msgstr "额外的源参数" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "族" + #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "防火墙" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "防火墙 - 自定义规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "防火墙 - IP 集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" msgstr "防火墙 - NAT 规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" msgstr "防火墙 - 端口转发" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" msgstr "防火墙 - 通信规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "防火墙 - 区域设置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" msgstr "防火墙配置迁移" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "流量卸载类型" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "转发" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" -"转发的 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.name}}}%{mark?, 标记 %{mark.val}}" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Friday" msgstr "星期五" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }%{item.ival}}}" +"IP 地址。\"}>%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }" +"%{item." +"ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"IP 地址。\"}>%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" "来自 %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 " @@ -451,100 +508,161 @@ msgstr "" "name}} 以外的 MAC 地址。\":%{item.hint.name? data-tooltip=\"%{item.hint." "name}\"}}>%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 msgid "General Settings" msgstr "常规设置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 -msgid "Hardware flow offloading" -msgstr "硬件流量分载" +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "授予访问防火墙配置的权限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "基于硬件的路由卸载,支持或不支持NAT。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "硬件流量卸载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (范围)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP 集" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/网络" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/网络/MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 msgid "IPv4 and IPv6" msgstr "IPv4 和 IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 msgid "IPv4 only" msgstr "仅 IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 伪装" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 msgid "IPv6 only" msgstr "仅 IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 msgid "Inbound device" msgstr "入站设备" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 -msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -msgstr "" -"入站 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.types?%{item.name}具有类型 %{item." -"types#%{next?, }%{item}} 的 ICMP:%{item.name}}}}%{mark?, 标记 %{mark.val}}%{helper?, 助手 " -"%{helper.inv?%{helper.val}:%{helper." -"val}}}" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "包括文件" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "初始哈希大小" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "入站数据" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Internal IP address" msgstr "内部 IP 地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "Internal port" msgstr "内部端口" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 msgid "Internal zone" msgstr "内部区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "区域内转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" msgstr "无效的 DSCP 标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" msgstr "无效的限制值" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "无效的集合名" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" msgstr "限制突发" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" msgstr "限制日志信息" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" msgstr "限制匹配" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" @@ -552,167 +670,210 @@ msgstr "" "限制匹配到 %{limit.num} 包每 %{limit.unit}%{limit." "burst? 突发 %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "已启用有限伪装" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." msgstr "将流量匹配限制为指定的速率。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "Loopback source IP" msgstr "环回源 IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "MASQUERADE - 自动重写为出站接口 IP" +msgstr "MASQUERADE - 自动重写源地址为出站接口 IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSS 钳制" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" msgstr "IP 动态伪装" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 msgid "Match" msgstr "匹配规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" msgstr "匹配 DSCP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 msgid "Match ICMP type" msgstr "匹配 ICMP 类型" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 msgid "Match device" msgstr "匹配设备" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 msgid "Match forwarded traffic directed at the given IP address." msgstr "匹配指向给定 IP 地址的转发流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 msgid "" "Match forwarded traffic directed at the given destination port or port range." msgstr "匹配指向给定目标端口或端口范围的转发流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 msgid "Match forwarded traffic from this IP or range." msgstr "匹配来自此 IP 或范围的转发流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 msgid "" "Match forwarded traffic originating from the given source port or port range." msgstr "匹配来自给定源端口或端口范围的转发流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match helper" msgstr "匹配助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "匹配指向此主机上指定目标端口或目标端口范围的入站流量" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Match mark" msgstr "匹配标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 msgid "Match traffic using the specified connection tracking helper." msgstr "使用指定的连接跟踪助手匹配流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." -msgstr "匹配特定的防火墙标记或不同标记的范围。" +msgstr "匹配特定的防火墙标记或防火墙标记范围。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 msgid "Matches forwarded traffic using the specified outbound network device." -msgstr "使用指定的出站网络设备匹配转发的流量。" +msgstr "匹配使用指定的出站网络设备转发的流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." -msgstr "匹配承载指定 DSCP 标记的流量。" +msgstr "匹配带有指定 DSCP 标记的流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "最大条目数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "最大长度" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "要匹配的最大初始数据包数:未达到上述指定限制时,每次加一直到达到此数。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Monday" msgstr "星期一" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 msgid "Month Days" msgstr "日期" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" msgstr "NAT 规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." msgstr "NAT 规则允许对源 IP 进行精细控制,以用于出站或转发流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 msgid "Name" msgstr "名称" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "网络掩码" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "无" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "与 QoS/SQM 不完全兼容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 msgid "Only match incoming traffic directed at the given IP address." msgstr "仅匹配指定目的 IP 地址的入站流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 msgid "Only match incoming traffic from these MACs." msgstr "仅匹配来自这些 MAC 的入站流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 msgid "Only match incoming traffic from this IP or range." msgstr "仅匹配来自此 IP 或 IP 范围的入站流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "仅匹配源自客户端主机上给定源端口或源端口范围的入站流量" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Outbound device" msgstr "出站设备" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 msgid "Outbound zone" msgstr "出站区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "出站数据" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "数据包字段匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"要进行匹配的数据包字段。
语法:direction_datatype。如:" +"src_port, dest_net
方向:src, dst。数据类" +"型:ip, port, mac, net, set
方向前缀可选。
*注意:" +"datatypeset在 fw4 中不受支持。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 msgid "Passes additional arguments to iptables. Use with care!" msgstr "传递到 iptables 的额外参数。小心使用!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -724,175 +885,196 @@ msgstr "" "他条件来匹配数据包。使用这些选项应格外小心,因为无效值可能会破坏防火墙规则集" "而对外暴露所有服务。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "CIDRs、subnets、host IP 等文件的路径。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "端口转发" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." -msgstr "" -"端口转发允许 Internet 上的远程计算机连接到内部网络中的特定计算机或服务。" +msgstr "端口转发允许互联网上的远程计算机连接到内部网络中的特定计算机或服务。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "端口范围" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 msgid "Protocol" msgstr "协议" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "重定向匹配的入站流量到内部主机的端口" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 msgid "Redirect matched incoming traffic to the specified internal host" msgstr "重定向匹配的入站流量到指定的内部主机" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "需要硬件 NAT 支持。目前 mt7621 已实现" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "参考外部集合" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "反射区" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "需要硬件 NAT 支持。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" msgstr "要限制 IP 动态伪装的目标子网" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" msgstr "要限制 IP 动态伪装的源子网" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 msgid "Restrict to address family" -msgstr "限制地址" +msgstr "地址族限制" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite IP address" msgstr "重写 IP 地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 msgid "Rewrite matched traffic to the specified source IP address." msgstr "将匹配的流量重写到指定的源 IP 地址。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 msgid "Rewrite matched traffic to the specified source port or port range." msgstr "将匹配的流量重写到指定的源端口或端口范围。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite port" msgstr "重写端口" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "Routing/NAT 分载" +msgstr "路由/NAT 卸载" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "SNAT - Rewrite to specific source IP or port" msgstr "SNAT - 重写为特定的源 IP 或端口" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 msgid "Saturday" msgstr "星期六" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" msgstr "设置标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" -"在已建立的连接上设置给定的标记值。格式为 value[/mask]。如果指定了掩码,则仅修" -"改掩码中设置的位。" +"在已建立的连接上设置给定的标记值。格式为:值[/掩码]。如果指定了掩码,则仅修改" +"掩码中设置的位。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "基于软件的 Routing/NAT 分载" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "基于软件的路由/NAT卸载。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "软件流量分载" +msgstr "软件流量卸载" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Source IP address" msgstr "源 IP 地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 msgid "Source MAC address" msgstr "源 MAC 地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Source address" msgstr "源地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "Source port" msgstr "源端口" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 msgid "Source zone" msgstr "源区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." msgstr "指定是否将此流量规则绑定到特定的入站或出站网络设备。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." -msgstr "指定是使用外部 IP 地址还是内部 IP 地址来反映流量。" +msgstr "指定反射流量使用外部或内部 IP 地址。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 msgid "Start Date (yyyy-mm-dd)" msgstr "开始日期(yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "开始时间(hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "开始时间(hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 msgid "Stop Date (yyyy-mm-dd)" msgstr "停止日期(yyyy-mm-dd)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "停止时间(hh.mm.ss)" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "停止时间(hh:mm:ss)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "存储方式" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Sunday" msgstr "星期日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." msgstr "需要更改现有的防火墙配置,以使 LuCI 正常运行。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." msgstr "防火墙通过在网络接口上创建区域来控制网络流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -906,7 +1088,7 @@ msgstr "" "%q
的其它区域。转发规则的作用是单向的,例如:转发从 lan 到 " "wan 的流量并意味着允许反向转发从 wan 到 lan 的流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -918,22 +1100,30 @@ msgstr "" "域入站和出站流量的默认策略,转发选项描述该区域内不同网络之间的流量转" "发策略。涵盖的网络指定从属于这个区域的网络。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Thursday" msgstr "星期四" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 msgid "Time Restrictions" msgstr "时间限制" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 msgid "Time in UTC" msgstr "UTC 时间" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "对该规则启用了时间限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "超时" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item." "ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" -"到 %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端" -"口 %{dest_port#%{next?, }%{item.ival}}}" +"到 %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端口 %{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 msgid "Tracking helper" msgstr "跟踪助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" msgstr "通信规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." msgstr "" -"通信规则定义了不同区域间的数据包传输策略,例如:拒绝一些主机之间的通信,开放" +"通信规则定义了不同区域间的数据包传输策略,例如:拒绝一些主机之间的通信、开放" "路由器 WAN 上的端口。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Tuesday" msgstr "星期二" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "无法保存内容:%s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 -msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "未知或未安装的 conntrack 助手 \"%s\"" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"单位:秒。默认值0表示该条目被永久添加到该集合。
最大值:" +"2147483 秒。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "未知或未安装的连接跟踪助手 \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 msgid "Unnamed NAT" msgstr "未命名 NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 msgid "Unnamed forward" msgstr "未命名转发" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 msgid "Unnamed rule" msgstr "未命名规则" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "未命名的集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" msgstr "未命名区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" msgstr "无法识别的协议" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " @@ -1037,447 +1239,345 @@ msgstr "" "按下“继续”后,目标“SNAT”的“redirect”部分将转换为“nat”部分,防火墙将重新启动以" "应用更新的配置。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 msgid "Use external IP address" msgstr "使用外部 IP 地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use internal IP address" msgstr "使用内部 IP 地址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "使用 ip 集" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." msgstr "此选项可对原始的、非 uci 托管的网络设备进行区域流量分类。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." msgstr "此选项可对源或目标子网而非网络或设备进行区域流量分类。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" msgstr "需要有效的防火墙标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Wednesday" msgstr "星期三" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 msgid "Week Days" msgstr "星期" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "XOR firewall mark" msgstr "异或防火墙标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" msgstr "异或标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "你的设备不运行 firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "你的设备运行 firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "区域 ⇒ 转发" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "应创建反射规则的区域。如果未设置,则仅使用目标区域。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 msgid "accept" msgstr "接受" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 msgid "any" msgstr "任意" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "所有区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "任意/全部" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "apply firewall mark" msgstr "应用防火墙标记" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "assign conntrack helper" msgstr "分配连接跟踪助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "自动" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap 仅支持 ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: 目标 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: 目标 MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: 目标 (子)网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: 目标端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: 目标 ip集*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 msgid "do not rewrite" msgstr "不重写" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "don't track" msgstr "不跟踪" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 msgid "drop" msgstr "丢弃" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 支持引用和创建 IP 集合,这样就无需为每个条目创建一条规则进行匹配," +"达到简化大型地址列表匹配的目的。firewall4 不支持 IP 集合中的 端口范围。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "哈希" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "小时" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
用于 Match 数据类型: *_ip。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "列表" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "分钟" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (子)网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: 端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 msgid "reject" msgstr "拒绝" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "秒" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ip集*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: 源 ip集*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: 源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: 源 MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: 源(子)网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: 源端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "此设备" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" msgstr "此新区域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" msgstr "无限制" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "unspecified" msgstr "未指定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "最多 65536 个条目。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" msgstr "有效的防火墙标记" -#~ msgid "%s in %s" -#~ msgstr "%s 位于 %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s 和 %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s 位于 %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d 数据包/%s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d 数据包/%s,突发 %d 数据包。" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s 并限制到 %s" - -#~ msgid "Accept forward" -#~ msgstr "接受转发" - -#~ msgid "Accept input" -#~ msgstr "接受入站" - -#~ msgid "Accept output" -#~ msgstr "接受出站" - -#~ msgid "Destination IP address" -#~ msgstr "目标 IP 地址" - -#~ msgid "Discard forward" -#~ msgstr "丢弃转发" - -#~ msgid "Discard input" -#~ msgstr "丢弃入站" - -#~ msgid "Discard output" -#~ msgstr "丢弃出站" - -#~ msgid "Do not rewrite" -#~ msgstr "不重写" - -#~ msgid "Do not track forward" -#~ msgstr "不跟踪转发" - -#~ msgid "Do not track input" -#~ msgstr "不跟踪入站" - -#~ msgid "Do not track output" -#~ msgstr "不跟踪出站" - -#~ msgid "Forward to" -#~ msgstr "转发到" - -#~ msgid "From %s in %s" -#~ msgstr "来自 %s 位于 %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "来自 %s 位于 %s 源于 %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "来自 %s 位于 %s 源端口 %s 源 MAC %s" - -#~ msgid "From %s on this device" -#~ msgstr "来自 %s 位于本设备" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "来自 %s 位于本设备源于 %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "来自 %s 位于本设备源端口 %s 源 MAC %s" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "IP 范围" - -#~ msgid "IPs" -#~ msgstr "IP" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MAC" - -#~ msgid "Network" -#~ msgstr "网络" - -#~ msgid "Refuse forward" -#~ msgstr "拒绝转发" - -#~ msgid "Refuse input" -#~ msgstr "拒绝入站" - -#~ msgid "Refuse output" -#~ msgstr "拒绝出站" - -#~ msgid "To %s at %s on this device" -#~ msgstr "到 %s 在 %s 位于本设备" - -#~ msgid "To %s in %s" -#~ msgstr "到 %s 位于 %s" - -#~ msgid "To %s on this device" -#~ msgstr "到 %s 位于本设备" - -#~ msgid "To %s, %s in %s" -#~ msgstr "到 %s, %s 位于 %s" - -#~ msgid "Via %s" -#~ msgstr "通过 %s" - -#~ msgid "Via %s at %s" -#~ msgstr "通过 %s 在 %s" - -#~ msgid "any host" -#~ msgstr "所有主机" - -#~ msgid "any router IP" -#~ msgstr "所有路由 IP" - -#~ msgid "not" -#~ msgstr "非" - -#~ msgid "port" -#~ msgstr "端口" - -#~ msgid "ports" -#~ msgstr "端口" - -#~ msgid "type" -#~ msgstr "类型" - -#~ msgid "types" -#~ msgstr "类型" - -#~ msgid "Force connection tracking" -#~ msgstr "强制连接追踪" +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "基于软件的 路由/NAT 分载" #~ msgid "" -#~ "Prevent the installation of NOTRACK rules which would bypass " -#~ "connection tracking." -#~ msgstr "防止安装 NOTRACK 规则,该规则会绕过连接跟踪。" - -#~ msgid "Disable" -#~ msgstr "禁用" - -#~ msgid "Restart Firewall" -#~ msgstr "重启防火墙" - -#~ msgid "Rule is disabled" -#~ msgstr "规则已禁用" - -#~ msgid "Rule is enabled" -#~ msgstr "规则已启用" - -#~ msgid "Add" -#~ msgstr "添加" - -#~ msgid "Add and edit..." -#~ msgstr "添加并编辑…" - -#~ msgid "External zone" -#~ msgstr "外部区域" - -#~ msgid "New SNAT rule" -#~ msgstr "新建 SNAT 规则" - -#~ msgid "New forward rule" -#~ msgstr "新建转发规则" - -#~ msgid "New input rule" -#~ msgstr "新建进入规则" - -#~ msgid "New port forward" -#~ msgstr "新建端口转发" - -#~ msgid "New source NAT" -#~ msgstr "新建 Source NAT" - -#~ msgid "Open ports on router" -#~ msgstr "打开路由器端口" - -#~ msgid "Other..." -#~ msgstr "其它..." - -#~ msgid "To source IP" -#~ msgstr "到源 IP" - -#~ msgid "To source port" -#~ msgstr "到源端口" - -#~ msgid "Output zone" -#~ msgstr "出站区域" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(未命名条目)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(未命名规则)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(未命名 SNAT)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "端口触发" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "匹配指定目标端口或目标端口范围的转发流量。" - -#~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "匹配来自客户端主机上指定源端口或源端口范围的入站流量。" - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "将匹配流量的源地址改写成指定地址。" - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "将匹配流量的源端口改写成指定端口。留空只改写 IP 地址。" - -#~ msgid "Rewrite to source %s" -#~ msgstr "源地址改写成 %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "源地址改写成 %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "SNAT IP 地址" - -#~ msgid "SNAT port" -#~ msgstr "SNAT 端口" - -#~ msgid "Source NAT" -#~ msgstr "Source NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Source NAT 是一种特殊形式的封包伪装,它允许精细的控制传出流量的源 IP,例" -#~ "如:将多个 WAN 地址映射到内部子网。" - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "开始时间(hh:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "停止时间(hh:mm:ss)" +#~ "为此区域上的出站流量开启网络地址和端口翻译(NAT 或 NAPT)。该选项在" +#~ "wan区域上通常处于开启状态。" #~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" #~ msgstr "" -#~ "本页面可以更改端口转发的高级设置。大多数情况下,不需要更改这些设置。" +#~ "转发的 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.name}}}%{mark?, 标记 %{mark.val}" +#~ "}" #~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "本页面可以更改通信规则的高级设置,比如:需匹配的源主机和目标主机。" - -#~ msgid "Unnamed SNAT" -#~ msgstr "未命名 SNAT" - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "您也可以选择“--自定义--”来定义多个协议,在多个协议间需加空格。" - -#~ msgid "Zone %q" -#~ msgstr "区域 %q" - -#~ msgid "traffic" -#~ msgstr "通信" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "入站 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.types?%{item.name}具有类型 " +#~ "%{item.types#%{next?, }%{item}} 的 ICMP:" +#~ "%{item.name}}}}%{mark?, 标记 %{mark.val}}%{helper?, 助手 %{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/zh_Hant/firewall.po b/luci-app-firewall/po/zh_Hant/firewall.po index ee55b1669..824c3825a 100644 --- a/luci-app-firewall/po/zh_Hant/firewall.po +++ b/luci-app-firewall/po/zh_Hant/firewall.po @@ -1,218 +1,295 @@ -# -# Yangfl , 2017, 2018. -# msgid "" msgstr "" -"PO-Revision-Date: 2020-02-25 23:11+0000\n" -"Last-Translator: Trevor \n" -"Language-Team: Chinese (Traditional) \n" +"PO-Revision-Date: 2024-11-29 19:50+0000\n" +"Last-Translator: Yuan Lau \n" +"Language-Team: Chinese (Traditional Han script) \n" "Language: zh_Hant\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 5.9-dev\n" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 msgid "" "%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " -"IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#" -"%{next?, }%{item.types?%{item.name}" -"ICMP with types %{item.types#%{next?, }" -"%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?" -"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " "%{helper.inv?%{helper.val}:%{helper." "val}}}" msgstr "" +"%{src?%{dest?已轉發:傳入}:傳出}%{ipv6?%{ipv4?IPv4IPv6:IPv6}:IPv4}%{proto?,協定:" +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP包含型別:%{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?,標記:" +"%{mark.val}}%{dscp?,DSCP:%{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?,幫手:%{helper." +"inv?%{helper.val}:%{helper.val}" +"}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 msgid "-- add IP --" msgstr "-- 新增 IP --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 msgid "-- add MAC --" msgstr "-- 新增 MAC 位置 --" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:117 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:198 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:181 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 msgid "" "Accept %{src?%{dest?forward:input}:output}" msgstr "" +"接受 %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 msgid "Prevent source rewrite" -msgstr "" +msgstr "避免來源重置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 msgid "" -"Forward to %{dest}%{dest_ip? IP " -"%{dest_ip}}%{dest_port? port %{dest_port}}" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" msgstr "" +"轉發 到 %{dest}%{dest_ip? IP %{dest_ip}" +"}%{dest_port? port %{dest_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 msgid "" "Drop %{src?%{dest?forward:input}:output}" msgstr "" +"丟棄 %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 msgid "" "Assign DSCP classification %{set_dscp}" "" msgstr "" +"指定DSCP(區別服務代碼點)分類 " +"%{set_dscp}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 msgid "" -"Assign conntrack helper %{set_helper}" +"Assign conntrack helper " +"%{set_helper}" msgstr "" +"指定連線追蹤助手%{set_helper}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 msgid "" -"%{set_mark?Assign:XOR} firewall mark " -"%{set_mark?:%{set_xmark}}" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" msgstr "" +"%{set_mark?Assign:XOR} 防火牆標記 " +"%{set_mark?:%{set_xmark}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 msgid "Automatically rewrite source IP" -msgstr "" +msgstr "自動重置 來源IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:123 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 msgid "" "Do not track %{src?%{dest?forward:input}:" "output}" msgstr "" +"勿追蹤 %{src?%{dest?forward:input}:" +"output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:120 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 msgid "" "Reject %{src?%{dest?forward:input}:output}" msgstr "" +"拒絕 %{src?%{dest?forward:input}:output}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 msgid "" "Statically rewrite to source %{snat_ip?IP " "%{snat_ip}} %{snat_port?port %{snat_port}}" msgstr "" +"靜態重寫 到來源 %{snat_ip?IP %{snat_ip}" +"} %{snat_port?port %{snat_port}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:305 msgid "A rewrite IP must be specified!" -msgstr "" +msgstr "必須指定重置IP!" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 msgid "ACCEPT - Disable address rewriting" -msgstr "" +msgstr "接受 - 禁用位址重置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:172 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:228 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:363 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:207 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:223 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:410 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:286 msgid "Action" -msgstr "行動" +msgstr "操作" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "" "Additional raw iptables arguments to classify zone destination " "traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " "traffic." msgstr "" +"允許原生 iptables 對區域目標流量進行分類的參數, 譬如... -p " +"tcp --dport 443 只針對相符輸出的HTTPS流量." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "" "Additional raw iptables arguments to classify zone source traffic, " "e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." msgstr "" +"允許原生 iptables 參數對區域來源流量進行分類, 譬如... -p tcp " +"--sport 443 只針對相符輸入的HTTPS流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "族" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:137 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:92 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "位址族、來源位址、目的位址、重寫IP位址必須匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 msgid "Advanced Settings" msgstr "進階設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "Allow \"invalid\" traffic" -msgstr "" +msgstr "允許「無效」流量" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 msgid "Allow forward from source zones:" -msgstr "允許從源區域轉發:" +msgstr "允許從來源區域轉發:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 msgid "Allow forward to destination zones:" -msgstr "允許轉發到目標區域:" +msgstr "允許轉發到目標區:" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 msgid "Any" msgstr "任何" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:429 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:257 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:273 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:478 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:494 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:367 msgid "Any day" -msgstr "" +msgstr "任一天" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 msgid "" "Apply a bitwise XOR of the given value and the existing mark value on " "established connections. Format is value[/mask]. If a mask is specified then " "those bits set in the mask are zeroed out." msgstr "" +"在給定的連接上對給定值和現有標記值進行按位XOR。格式為value [/mask]。如果指定" +"了遮罩,則將遮罩中設置的那些位元清零。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Apply the given DSCP class or value to established connections." -msgstr "" +msgstr "啟用付予的DSCP(區別服務代碼點)來建立連線." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:438 msgid "Assign the specified connection tracking helper to matched traffic." -msgstr "" +msgstr "指定特定的連線追蹤幫手來匹配流量." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "Automatic helper assignment" -msgstr "" +msgstr "自動分派助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 msgid "" "Automatically assign conntrack helpers based on traffic protocol and port" -msgstr "" +msgstr "根據流量和埠號自動分派conntrack" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:60 +msgid "Comment" +msgstr "註解" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 msgid "Conntrack Settings" -msgstr "" +msgstr "Conntrack設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Conntrack helpers" -msgstr "" +msgstr "Conntrack助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:15 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 msgid "Contents have been saved." -msgstr "內容已經儲存。" +msgstr "內容已儲存。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:650 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 msgid "Continue" msgstr "繼續" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:203 +msgid "Counters" +msgstr "計數器" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "Covered devices" -msgstr "" +msgstr "已涵蓋裝置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 msgid "Covered networks" -msgstr "覆蓋網路" +msgstr "已涵蓋網路" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "Covered subnets" -msgstr "" +msgstr "已涵蓋子網路" -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 msgid "Custom Rules" msgstr "自訂規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 msgid "" "Custom rules allow you to execute arbitrary iptables commands which are not " "otherwise covered by the firewall framework. The commands are executed after " @@ -221,149 +298,209 @@ msgstr "" "自訂規則允許您執行不屬於防火牆框架的任意 iptables 指令。每次重啟防火牆時,在" "預設的規則執行後這些指令將立即執行。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:373 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 msgid "DSCP classification" -msgstr "" +msgstr "DSCP(區別服務代碼點)分類" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "DSCP mark" -msgstr "" +msgstr "DSCP(區別服務代碼點)標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:294 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 msgid "DSCP mark required" -msgstr "" +msgstr "DSCP(區別服務代碼點)必須標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:354 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:401 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 msgid "Destination address" msgstr "目標位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:356 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:198 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:403 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:277 msgid "Destination port" -msgstr "目標埠" +msgstr "目的通訊埠" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:395 msgid "Destination zone" msgstr "目標區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 msgid "Device name" msgstr "裝置名稱" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 msgid "" "Do not install extra rules to reject forwarded traffic with conntrack state " "invalid. This may be required for complex asymmetric route setups." msgstr "" +"不設定額外拒絕轉發conntrack狀態無效的流量規則。對於複雜的不對稱路由" +"設定可能是必需的。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:44 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 msgid "Drop invalid packets" -msgstr "丟棄無效資料包" +msgstr "丟棄無效封包" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:234 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:163 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:209 msgid "Enable" msgstr "啟用" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:305 msgid "Enable NAT Loopback" -msgstr "啟用 NAT 環回" +msgstr "啟用NAT環回" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 msgid "Enable SYN-flood protection" -msgstr "啟用 SYN-flood 防禦" +msgstr "啟用SYN洪水保護" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:235 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 msgid "Enable logging on this zone" msgstr "啟用此區域的日誌記錄" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"為此區域的IPv4出站流量開啟網路位址和端口轉換(NAT4或NAPT4)。 wan區域" +"通常開啟此功能。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "為此區域的IPv6出站流量開啟網路位址和端口轉換(NAT6或NAPT6)。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:210 +msgid "Enabled" +msgstr "啟用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Enables packet and byte count tracking for the set." +msgstr "為該集合開啟封包和字節計數追蹤。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "Expecting: %s" -msgstr "" +msgstr "請輸入:%s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 -msgid "Experimental feature. Not fully compatible with QoS/SQM." -msgstr "實驗特性。與 QoS/SQM 不完全相容。" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 msgid "Explicitly choses allowed connection tracking helpers for zone traffic" -msgstr "" +msgstr "針對區域流量明確選擇已允許的連接追蹤幫手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:273 msgid "External IP address" -msgstr "外部 IP 位址" +msgstr "外部IP位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:278 msgid "External port" -msgstr "外部埠" +msgstr "外部埠號" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:283 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:248 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:469 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:341 msgid "Extra arguments" -msgstr "附加引數" +msgstr "額外引數" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 msgid "Extra destination arguments" -msgstr "" +msgstr "額外目標引數" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 msgid "Extra iptables arguments" -msgstr "" +msgstr "額外iptables引數" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 msgid "Extra source arguments" -msgstr "" +msgstr "額外來源引數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:66 +msgid "Family" +msgstr "族" #: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 msgid "Firewall" msgstr "防火牆" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:24 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 msgid "Firewall - Custom Rules" msgstr "防火牆 - 自訂規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:126 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "防火牆 - IP 集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 msgid "Firewall - NAT Rules" -msgstr "防火牆 - NAT 規則" +msgstr "防火牆 - NAT規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:128 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 msgid "Firewall - Port Forwards" -msgstr "防火牆 - 埠轉發" +msgstr "防火牆 - 通訊埠轉發" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 msgid "Firewall - Traffic Rules" -msgstr "防火牆 - 通訊規則" +msgstr "防火牆 - 流量規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:36 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 msgid "Firewall - Zone Settings" msgstr "防火牆 - 區域設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:643 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 msgid "Firewall configuration migration" -msgstr "" +msgstr "防火牆設定移轉" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:49 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "流量卸載類型" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 msgid "Forward" msgstr "轉發" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:29 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 msgid "" -"Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" +"%{mark.num}%{mark.mask? with mask %{mark.mask}}.\":%{mark.mask? data-" +"tooltip=\"Mask fwmark value with %{mark.mask} before compare.\"}}>%{mark.val}" +"}" msgstr "" +"轉發 %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, 協定 %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:435 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:263 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 msgid "Friday" msgstr "星期五" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:38 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item." "ival}}}" msgstr "" +"來自:%{src}%{src_device?,介面:%{src_device}}%{src_ip?,IP:" +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?,埠:" +"%{src_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 msgid "" "From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " "%{src_ip#%{next?, }%{item.ival}" "}}" msgstr "" +"來自:%{src}%{src_device?,介面:%{src_device}}%{src_ip?,IP:" +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?,埠:port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?,MAC:%{src_mac#%{next?, }" +"%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 msgid "" -"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, " -"port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" msgstr "" +"來自:%{src}%{src_ip?,IP:%{src_ip#%{next?, }%{item.ival}}}%{src_port?,埠:%{src_port#%{next?, }%{item.ival}}}%{src_mac?,MAC:" +"%{src_mac#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:136 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:180 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:134 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:91 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:16 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:160 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 msgid "General Settings" -msgstr "基本設定" +msgstr "一般設定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:73 +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "授予存取防火牆設定的權限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "基於硬體的路由卸載,有無NAT均可。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 msgid "Hardware flow offloading" -msgstr "硬體流量分載" +msgstr "硬體流量卸載" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:271 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:143 +msgid "IP (range)" +msgstr "IP (範圍)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP 集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:151 +msgid "IPs/Networks" +msgstr "IP/網路" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:106 +msgid "IPs/Networks/MACs" +msgstr "IP/網路/MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:190 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:279 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:218 msgid "IPv4 and IPv6" -msgstr "IPv4 和 IPv6" +msgstr "IPv4和IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:272 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 msgid "IPv4 only" -msgstr "僅 IPv4" +msgstr "僅IPv4" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:273 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "NAT6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 msgid "IPv6 only" -msgstr "僅 IPv6" +msgstr "僅IPv6" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 msgid "Inbound device" -msgstr "" +msgstr "輸入設備" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:186 +msgid "Include File" +msgstr "包括文件" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 msgid "" -"Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with " -"types %{item.types#%{next?, }%{item}}:%{item." -"name}}}}%{mark?, mark %{mark.val}" -"}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" msgstr "" +"傳入 %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, 協定 %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:47 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:179 +msgid "Initial Hash Size" +msgstr "初始雜湊大小" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 msgid "Input" msgstr "入站資料" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:233 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:291 msgid "Internal IP address" msgstr "內部 IP 位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:296 msgid "Internal port" msgstr "內部埠" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:286 msgid "Internal zone" msgstr "內部區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:302 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "區內轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 msgid "Invalid DSCP mark" -msgstr "" +msgstr "不正確的差異服務的程式碼點 DSCP標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 msgid "Invalid limit value" -msgstr "" +msgstr "不正確的限制值" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:380 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:46 +msgid "Invalid set name" +msgstr "集合名無效" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 msgid "Limit burst" -msgstr "" +msgstr "限制爆潰" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 msgid "Limit log messages" -msgstr "限制日誌資訊" +msgstr "限制日誌資訊量" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:346 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 msgid "Limit matching" -msgstr "" +msgstr "限制相符" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:74 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:95 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 msgid "" "Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" msgstr "" +"限制相符到 %{limit.num} 封包數每 %{limit.unit}%{limit." +"burst? burst %{limit.burst}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:347 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "已啟用有限NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 msgid "Limits traffic matching to the specified rate." -msgstr "" +msgstr "限制流量相符到指定速率." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:310 msgid "Loopback source IP" -msgstr "" +msgstr "回送來源IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 msgid "MASQUERADE - Automatically rewrite to outbound interface IP" -msgstr "" +msgstr "MASQUERADE偽裝 - 自動重置到輸出界面的IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:148 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 msgid "MSS clamping" msgstr "MSS 鉗制" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 msgid "Masquerading" -msgstr "IP 動態偽裝" +msgstr "NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:217 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:146 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:192 msgid "Match" -msgstr "匹配規則" +msgstr "相符規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 msgid "Match DSCP" -msgstr "" +msgstr "相符 DSCP(區別服務代碼點)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:284 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:292 msgid "Match ICMP type" -msgstr "匹配 ICMP 型別" +msgstr "相符 ICMP 型別" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:248 msgid "Match device" -msgstr "" +msgstr "相符裝置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 msgid "Match forwarded traffic directed at the given IP address." -msgstr "" +msgstr "相符轉發的流量指向給予的IP位址." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 msgid "" "Match forwarded traffic directed at the given destination port or port range." -msgstr "" +msgstr "相符轉發的流量指向給予的目標埠或範圍埠." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 msgid "Match forwarded traffic from this IP or range." -msgstr "" +msgstr "從這個IP或範圍相符轉發的流量." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 msgid "" "Match forwarded traffic originating from the given source port or port range." -msgstr "" +msgstr "相符轉發的流量源自給定的來源埠或範圍埠." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:325 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 msgid "Match helper" -msgstr "" +msgstr "相符助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" -msgstr "匹配指向此主機上指定目標埠或目標埠範圍的入站流量。" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 -msgid "Match mark" -msgstr "" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:398 -msgid "Match traffic using the specified connection tracking helper." -msgstr "" +msgstr "相符指向此主機上指定目標埠或目標埠範圍的入站流量" #: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "相符標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:325 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +msgid "Match traffic using the specified connection tracking helper." +msgstr "相符流量使用特定的連線追蹤。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 msgid "Matches a specific firewall mark or a range of different marks." -msgstr "" +msgstr "相符特定的FW防火牆標記或者不同的範圍標記." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 msgid "Matches forwarded traffic using the specified outbound network device." -msgstr "" +msgstr "相符正使用特定輸出網路設備的轉發流量." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 msgid "Matches traffic carrying the specified DSCP marking." -msgstr "" +msgstr "相符附帶特定之DSCP(區別服務代碼點)標記的流量." -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:381 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:112 +msgid "Max Entries" +msgstr "最大條目數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:171 +msgid "Max Length" +msgstr "最大長度" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 msgid "" "Maximum initial number of packets to match: this number gets recharged by " "one every time the limit specified above is not reached, up to this number." msgstr "" +"相符的最大初始封包數量; 每次未達到上述指定的限制時,此數量將逐一地充實,直到此" +"數量為止." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:259 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 msgid "Monday" msgstr "星期一" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:490 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:363 msgid "Month Days" -msgstr "日期" +msgstr "每月天數" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:129 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:43 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 msgid "NAT Rules" -msgstr "NAT 規則" +msgstr "NAT規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:127 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 msgid "" "NAT rules allow fine grained control over the source IP to use for outbound " "or forwarded traffic." -msgstr "" +msgstr "NAT規則允許對來源IP進行精細控制以便用於輸出或是轉發流量." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:157 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:142 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:51 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:209 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:188 msgid "Name" -msgstr "名字" +msgstr "名稱" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:165 +msgid "Netmask" +msgstr "網路遮罩" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "無" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "與 QoS/SQM 不完全相容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 msgid "Only match incoming traffic directed at the given IP address." -msgstr "僅匹配指定目的 IP 位址的入站流量。" +msgstr "僅相符指定目的IP位址的入站流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 msgid "Only match incoming traffic from these MACs." -msgstr "僅匹配來自這些 MAC 的入站流量。" +msgstr "僅相符來自這些MAC的入站流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:201 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 msgid "Only match incoming traffic from this IP or range." -msgstr "僅匹配來自此 IP 或 IP 範圍的入站流量。" +msgstr "僅相符來自此IP或IP範圍的入站流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:206 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" -msgstr "僅匹配源自客戶端主機上給定源埠或源埠範圍的入站流量。" +msgstr "僅相符源自客戶端主機上給定來源埠或來源埠範圍的入站流量" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:238 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:330 msgid "Outbound device" -msgstr "" +msgstr "輸出設備" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:245 msgid "Outbound zone" -msgstr "" +msgstr "輸出區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 msgid "Output" msgstr "出站資料" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:284 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:422 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:249 -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "傳遞到 iptables 的額外引數。小心使用!" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:74 +msgid "Packet Field Match" +msgstr "封包字段匹配" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"要進行匹配的封包字段。
語法:direction_datatype。如:" +"src_port, dest_net
方向:src, dst。數據類" +"型:ip, port, mac, net, set
方向首碼可選。
*注意:" +"datatype set 在fw4中不受支持。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "傳遞附加引數到 iptables,小心使用!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 msgid "" "Passing raw iptables arguments to source and destination traffic " "classification rules allows to match packets based on other criteria than " @@ -653,173 +992,242 @@ msgid "" "invalid values could render the firewall ruleset broken, completely exposing " "all services." msgstr "" +"透過將原始 iptables 參數傳遞給來源和目的流量分類規則,可以根據介面或子網路以" +"外的其他條件來相符封包. 這些選項應格外小心, 因為無效值可能會使防火牆規則集損" +"壞, 從而對外完全暴露所有服務." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:131 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:25 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "CIDRs、subnets、host IP 等文件的路徑。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 msgid "Port Forwards" msgstr "埠轉發" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 msgid "" "Port forwarding allows remote computers on the Internet to connect to a " "specific computer or service within the private LAN." -msgstr "埠轉發允許 Internet 上的遠端計算機連線到內部網路中的特定計算機或服務。" +msgstr "通訊埠轉發允許Internet上的遠端電腦連線到內部網路中的特定電腦或服務。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:185 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:157 +msgid "Port range" +msgstr "埠範圍" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:236 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:241 msgid "Protocol" -msgstr "協議" +msgstr "協定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:239 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 msgid "" "Redirect matched incoming traffic to the given port on the internal host" -msgstr "重定向匹配的入站流量到內部主機的埠" +msgstr "重新導向相符的入站流量到內部主機給予的埠號" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:234 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 msgid "Redirect matched incoming traffic to the specified internal host" -msgstr "重定向匹配的入站流量到指定的內部主機" +msgstr "重新導向相符的入站流量到指定的內部主機" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:74 -msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "需要硬體 NAT 支援。目前 mt7621 已實現" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:121 +msgid "Refer To External Set" +msgstr "參考外部集合" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:215 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:319 +msgid "Reflection zones" +msgstr "回應區" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "需要硬體NAT支援。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 msgid "Restrict Masquerading to given destination subnets" -msgstr "要限制 IP 動態偽裝的目標子網" +msgstr "限制NAT的目標子網路" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:208 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 msgid "Restrict Masquerading to given source subnets" -msgstr "要限制 IP 動態偽裝的源子網" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:202 -msgid "Restrict to address family" -msgstr "限制位址" - -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:214 -msgid "Rewrite IP address" -msgstr "" +msgstr "限制NAT的來源子網路" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:276 #: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Restrict to address family" +msgstr "限制到位址群" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Rewrite IP address" +msgstr "重置IP位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 msgid "Rewrite matched traffic to the specified source IP address." -msgstr "" +msgstr "重置已相符流量到特定的來源IP位址。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 msgid "Rewrite matched traffic to the specified source port or port range." -msgstr "" +msgstr "重置已相符流量到特定的來源埠或範圍埠." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:229 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:310 msgid "Rewrite port" -msgstr "" +msgstr "重置埠號" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 msgid "Routing/NAT Offloading" -msgstr "Routing/NAT 分載" +msgstr "路由/NAT卸載" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:289 msgid "SNAT - Rewrite to specific source IP or port" -msgstr "" +msgstr "SNAT - 重置到特定的來源IP或埠" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:436 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 msgid "Saturday" msgstr "星期六" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "Set mark" -msgstr "" +msgstr "設定標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 msgid "" "Set the given mark value on established connections. Format is value[/mask]. " "If a mask is specified then only those bits set in the mask are modified." msgstr "" +"在建立的連接上設置給定的標記值. 格式為value [/ mask]. 如果指定了子網路遮罩," +"則僅修改子網路遮罩中設置的那些位元." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 -msgid "Software based offloading for routing/NAT" -msgstr "基於軟體的 Routing/NAT 分載" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "基於軟體的路由/NAT卸載。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 msgid "Software flow offloading" -msgstr "軟體流量分載" +msgstr "軟體式流量卸載" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:200 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:259 msgid "Source IP address" -msgstr "源 IP 位址" +msgstr "來源IP位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:195 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:338 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:254 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:385 msgid "Source MAC address" -msgstr "源 MAC 位址" +msgstr "來源MAC位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:339 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:179 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:252 msgid "Source address" -msgstr "源位址" +msgstr "來源位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:205 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:341 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:388 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 msgid "Source port" -msgstr "源埠" +msgstr "來源埠" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 msgid "Source zone" -msgstr "源區域" +msgstr "來源區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 msgid "" "Specifies whether to tie this traffic rule to a specific inbound or outbound " "network device." -msgstr "" +msgstr "指定是否將此流量規則綁定到特定的輸入或輸出的網路設備." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:310 msgid "" "Specifies whether to use the external or the internal IP address for " "reflected traffic." -msgstr "" +msgstr "指定是使用外部IP地址還是內部IP地址來映射流量." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:509 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:382 msgid "Start Date (yyyy-mm-dd)" -msgstr "開始日期(yyyy-mm-dd)" +msgstr "開始日期(西元年-月-日)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:452 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:280 -msgid "Start Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:501 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:374 +msgid "Start Time (hh:mm:ss)" +msgstr "啟動時間 (小時.分鐘.秒)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:464 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:513 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:386 msgid "Stop Date (yyyy-mm-dd)" -msgstr "停止日期(yyyy-mm-dd)" +msgstr "停止日期(西元年-月-日)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:456 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:284 -msgid "Stop Time (hh.mm.ss)" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:505 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:378 +msgid "Stop Time (hh:mm:ss)" +msgstr "停止時間 (小時.分鐘.秒)" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:430 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:129 +msgid "Storage Method" +msgstr "儲存方式" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 msgid "Sunday" msgstr "星期日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:644 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 msgid "" "The existing firewall configuration needs to be changed for LuCI to function " "properly." -msgstr "" +msgstr "已存在的防火牆設定需要被變更以便 LuCI發揮正常功效." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:37 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 msgid "" "The firewall creates zones over your network interfaces to control network " "traffic flow." -msgstr "防火牆通過在網路介面上建立區域來控制網路流量。" +msgstr "防火牆透過在網路介面上建立區域來控制網路流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:188 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 msgid "" "The options below control the forwarding policies between this zone (%s) and " "other zones. Destination zones cover forwarded traffic " @@ -828,12 +1236,13 @@ msgid "" "rule is unidirectional, e.g. a forward from lan to wan does " "not imply a permission to forward from wan to lan as well." msgstr "" -"以下選項可以控制區域(%s)和其它區域間的轉發規則。目標區域接收" -"源自 %q 的轉發流量。源區域匹配從目標為 %q 的區域的需轉發流量。轉發規則的作用是單向的,例如:一條允許" -"從 lan 到 wan 的轉發規則並不隱含有允許相反方向從 wan 到 lan 的流量轉發。" +"以下選項可以控制區域(%s)和其它區域間的轉發規則;目標區域接收" +"源自%q 的轉發流量,來源區域相符來自其他區域的" +"目標為%q 的轉發流量。轉發規則的作用是單向的,例如:" +"一條允許從LAN到WAN的轉發規則並不隱含有允許相反方向從WAN到LAN的流量轉" +"發。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:103 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 msgid "" "This section defines common properties of %q. The input and " "output options set the default policies for traffic entering and " @@ -841,26 +1250,42 @@ msgid "" "forwarded traffic between different networks within the zone. Covered " "networks specifies which available networks are members of this zone." msgstr "" -"本節定義 %q 的通用屬性,入站資料出站資料選項用於設定此區" -"域入站和出站流量的預設策略,轉發選項描述該區域內不同網路之間的流量轉" -"發策略。覆蓋網路指定從屬於這個區域的網路。" +"本節定義%q的通用屬性,入站資料出站資料選項用於設定此區域" +"入站和出站流量的預設策略,轉發選項描述該區域內不同網路之間的流量轉發" +"策略。覆蓋網路指定從屬於這個區域的網路。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:434 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 msgid "Thursday" msgstr "星期四" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 msgid "Time Restrictions" -msgstr "" +msgstr "時間限制" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:468 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:517 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:390 msgid "Time in UTC" msgstr "UTC 時間" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Time restrictions are enabled for this rule" +msgstr "對該規則啟用了時間限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:195 +msgid "Timeout" +msgstr "逾時" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 msgid "" "To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " "%{dest_ip#%{next?, }%{item." "ival}
}}" msgstr "" +"到:%{dest}%{dest_device?,介面:%{dest_device}}%{dest_ip?,IP:" +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?,埠:" +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:48 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 msgid "" "To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}" msgstr "" +"到:%{dest}%{dest_device?,透過介面:%{dest_device}}%{dest_ip?," +"IP:%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?,埠:" +"%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:56 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 msgid "" -"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" msgstr "" +"到:%{dest}%{dest_ip?,IP:%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?,埠:%{dest_port#%{next?, }%{item.ival}}}" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:438 msgid "Tracking helper" -msgstr "" +msgstr "追蹤小幫手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:175 -#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:34 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 msgid "Traffic Rules" -msgstr "通訊規則" +msgstr "流量規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放" -"路由器 WAN 上的埠。" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放" +"路由器WAN上的埠。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:432 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 msgid "Tuesday" msgstr "星期二" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:18 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 msgid "Unable to save contents: %s" msgstr "無法儲存內容:%s" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:276 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"單位:秒。默認值0表示該條目被永久添加到該集合。
最大值:" +"2147483 秒。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:340 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 msgid "Unknown or not installed conntrack helper \"%s\"" -msgstr "" +msgstr "未知或未安裝的連線跟蹤助手\"%s\"" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:139 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:143 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 msgid "Unnamed NAT" -msgstr "" +msgstr "未命名NAT" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:144 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 msgid "Unnamed forward" msgstr "未命名轉發" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:190 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 msgid "Unnamed rule" msgstr "未命名規則" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:56 +msgid "Unnamed set" +msgstr "未命名集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 msgid "Unnamed zone" -msgstr "" +msgstr "未命名區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:548 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 msgid "Unrecognized protocol" -msgstr "" +msgstr "無法識別的協定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:645 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 msgid "" "Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " "be converted to \"nat\" sections and the firewall will be restarted to apply " "the updated configuration." msgstr "" +"一旦按下\"繼續\"後, 附帶目標為\" SNAT\"的\"重導向\"欄位將轉換為\" nat\"欄位," +"防火牆將重新啟動以套用更新的設定值." -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 msgid "Use external IP address" -msgstr "" +msgstr "使用外部IP位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:313 msgid "Use internal IP address" -msgstr "" +msgstr "使用內部IP位址" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:246 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:377 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:321 +msgid "Use ipset" +msgstr "使用IP集" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 msgid "" "Use this option to classify zone traffic by raw, non-uci managed " "network devices." -msgstr "" +msgstr "使用此選項可以對原生、非uci管理的網路裝置分類區域流量。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 msgid "" "Use this option to classify zone traffic by source or destination subnet " "instead of networks or devices." -msgstr "" +msgstr "使用此選項可以按來源或目的子網路(而不是網路或裝置)對區域流量進行分類。" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 msgid "Valid firewall mark required" -msgstr "" +msgstr "需要有效的防火牆標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:433 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 msgid "Wednesday" msgstr "星期三" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:425 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:474 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:347 msgid "Week Days" -msgstr "星期" +msgstr "每週日數" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 msgid "XOR firewall mark" -msgstr "" +msgstr "按位元互斥XOR防火牆標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:313 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 msgid "XOR mark" -msgstr "" +msgstr "按位元互斥XOR標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:121 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "你的設備沒有使用 firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "你的設備使用firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 msgid "Zone ⇒ Forwardings" msgstr "區域 ⇒ 轉發" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:80 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 msgid "Zones" msgstr "區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:367 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:55 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:319 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "創建回應規則的區域。若未設置,將僅使用目標區域。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 msgid "accept" msgstr "接受" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:265 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:431 -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:453 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:210 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:242 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:263 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:344 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:359 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:393 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:400 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:202 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:300 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:327 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:406 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:440 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:447 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:281 msgid "any" -msgstr "所有" +msgstr "任何" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:39 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "any zone" msgstr "所有區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:297 +msgid "any/all" +msgstr "任意/全部" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 msgid "apply firewall mark" -msgstr "" +msgstr "套用防火牆標記" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:370 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 msgid "assign conntrack helper" -msgstr "" +msgstr "指定連線跟蹤助手" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +msgid "automatic" +msgstr "自動" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:136 +msgid "bitmap is ipv4 only" +msgstr "bitmap僅支援 IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "day" msgstr "日" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:233 -msgid "do not rewrite" -msgstr "" +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: 目標 IP" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:369 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: 目標 MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: 目標(子)網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_port: Destination Port" +msgstr "dest_port:目標埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:97 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: 目標 ip集合*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:314 +msgid "do not rewrite" +msgstr "不重置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 msgid "don't track" msgstr "不跟蹤" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:366 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:54 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:136 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 msgid "drop" msgstr "丟棄" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4支援引用和創建IP集,這樣無需為每個條目創建一條規則進行匹配,達到簡化" +"大型位址列表匹配的目的。firewall4不支援IP集中的埠範圍。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "hash" +msgstr "雜湊" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "hour" msgstr "小時" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:80 +msgid "ip: IP addr" +msgstr "ip: IP 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
用於匹配資料類型:*_ip。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "list" +msgstr "清單" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "mac: MAC addr" +msgstr "mac: MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "minute" msgstr "分鐘" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:368 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:53 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:135 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "net: (sub)net" +msgstr "net:(子)網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "port: Port" +msgstr "port: 埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 msgid "reject" msgstr "拒絕" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:67 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:88 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:60 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 msgid "second" msgstr "秒" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:48 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:57 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:81 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:49 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:85 +msgid "set: ipset*" +msgstr "set: ip集合*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:91 +msgid "src_Set: Source ipset*" +msgstr "src_Set: 源 ip集合*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "src_ip: Source IP" +msgstr "src_ip: 源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: 源 MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_net: Source (sub)net" +msgstr "src_net: 源(子)網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_port: Source Port" +msgstr "src_port: 源 埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 msgid "this device" msgstr "此裝置" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:102 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:187 -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 msgid "this new zone" -msgstr "" +msgstr "新區域" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 msgid "unlimited" -msgstr "" +msgstr "無限" -#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:250 msgid "unspecified" -msgstr "" +msgstr "未規定" -#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:336 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "up to 65536 entries." +msgstr "最多 65536 個條目。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 msgid "valid firewall mark" -msgstr "" - -#~ msgid "%s in %s" -#~ msgstr "%s 位於 %s" - -#~ msgid "%s%s with %s" -#~ msgstr "%s%s 和 %s" - -#~ msgid "%s, %s in %s" -#~ msgstr "%s, %s 位於 %s" - -#~ msgid "%d pkts. per %s" -#~ msgstr "%d 資料包/%s" - -#~ msgid "%d pkts. per %s, burst %d pkts." -#~ msgstr "%d 資料包/%s,突發 %d 資料包。" - -#~ msgid "%s and limit to %s" -#~ msgstr "%s 並限制到 %s" - -#~ msgid "Accept forward" -#~ msgstr "接受轉發" - -#~ msgid "Accept input" -#~ msgstr "接受入站" - -#~ msgid "Accept output" -#~ msgstr "接受出站" - -#~ msgid "Destination IP address" -#~ msgstr "目標 IP 位址" - -#~ msgid "Discard forward" -#~ msgstr "丟棄轉發" - -#~ msgid "Discard input" -#~ msgstr "丟棄入站" - -#~ msgid "Discard output" -#~ msgstr "丟棄出站" - -#~ msgid "Do not rewrite" -#~ msgstr "不重寫" - -#~ msgid "Do not track forward" -#~ msgstr "不跟蹤轉發" - -#~ msgid "Do not track input" -#~ msgstr "不跟蹤入站" - -#~ msgid "Do not track output" -#~ msgstr "不跟蹤出站" - -#~ msgid "Forward to" -#~ msgstr "轉發到" - -#~ msgid "From %s in %s" -#~ msgstr "來自 %s 位於 %s" - -#~ msgid "From %s in %s with source %s" -#~ msgstr "來自 %s 位於 %s 源於 %s" - -#~ msgid "From %s in %s with source %s and %s" -#~ msgstr "來自 %s 位於 %s 源埠 %s 源 MAC %s" - -#~ msgid "From %s on this device" -#~ msgstr "來自 %s 位於本裝置" - -#~ msgid "From %s on this device with source %s" -#~ msgstr "來自 %s 位於本裝置源於 %s" - -#~ msgid "From %s on this device with source %s and %s" -#~ msgstr "來自 %s 位於本裝置源埠 %s 源 MAC %s" - -#~ msgid "IP" -#~ msgstr "IP" - -#~ msgid "IP range" -#~ msgstr "IP 範圍" - -#~ msgid "IPs" -#~ msgstr "IP" - -#~ msgid "IPv4" -#~ msgstr "IPv4" - -#~ msgid "IPv6" -#~ msgstr "IPv6" - -#~ msgid "MAC" -#~ msgstr "MAC" - -#~ msgid "MACs" -#~ msgstr "MAC" - -#~ msgid "Refuse forward" -#~ msgstr "拒絕轉發" - -#~ msgid "Refuse input" -#~ msgstr "拒絕入站" - -#~ msgid "Refuse output" -#~ msgstr "拒絕出站" - -#~ msgid "To %s at %s on this device" -#~ msgstr "到 %s 在 %s 位於本裝置" - -#~ msgid "To %s in %s" -#~ msgstr "到 %s 位於 %s" - -#~ msgid "To %s on this device" -#~ msgstr "到 %s 位於本裝置" - -#~ msgid "To %s, %s in %s" -#~ msgstr "到 %s, %s 位於 %s" - -#~ msgid "Via %s" -#~ msgstr "通過 %s" - -#~ msgid "Via %s at %s" -#~ msgstr "通過 %s 在 %s" - -#~ msgid "any host" -#~ msgstr "所有主機" - -#~ msgid "any router IP" -#~ msgstr "所有路由 IP" - -#~ msgid "not" -#~ msgstr "非" - -#~ msgid "port" -#~ msgstr "埠" - -#~ msgid "ports" -#~ msgstr "埠" - -#~ msgid "type" -#~ msgstr "型別" - -#~ msgid "types" -#~ msgstr "型別" - -#~ msgid "Force connection tracking" -#~ msgstr "強制連線追蹤" - -#~ msgid "Disable" -#~ msgstr "禁用" - -#~ msgid "Restart Firewall" -#~ msgstr "重啟防火牆" - -#~ msgid "Rule is disabled" -#~ msgstr "規則已禁用" - -#~ msgid "Rule is enabled" -#~ msgstr "規則已啟用" - -#~ msgid "Add" -#~ msgstr "新增" - -#~ msgid "Add and edit..." -#~ msgstr "新增並編輯…" - -#~ msgid "External zone" -#~ msgstr "外部區域" - -#~ msgid "New SNAT rule" -#~ msgstr "新建 SNAT 規則" - -#~ msgid "New forward rule" -#~ msgstr "新建轉發規則" - -#~ msgid "New input rule" -#~ msgstr "新建進入規則" - -#~ msgid "New port forward" -#~ msgstr "新建埠轉發" - -#~ msgid "New source NAT" -#~ msgstr "新建 Source NAT" - -#~ msgid "Open ports on router" -#~ msgstr "開啟路由器埠" - -#~ msgid "Other..." -#~ msgstr "其它..." - -#~ msgid "To source IP" -#~ msgstr "到源 IP" - -#~ msgid "To source port" -#~ msgstr "到源埠" - -#~ msgid "Output zone" -#~ msgstr "出站區域" - -#~ msgid "(Unnamed Entry)" -#~ msgstr "(未命名條目)" - -#~ msgid "(Unnamed Rule)" -#~ msgstr "(未命名規則)" - -#~ msgid "(Unnamed SNAT)" -#~ msgstr "(未命名 SNAT)" - -#~ msgid "Inter-Zone Forwarding" -#~ msgstr "埠觸發" - -#~ msgid "Match forwarded traffic to the given destination port or port range." -#~ msgstr "匹配指定目標埠或目標埠範圍的轉發流量。" +msgstr "有效正確的防火牆標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "實驗性功能。與QoS/SQM不完全相容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放" +"路由器WAN上的埠。" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "軟體式的 路由/NAT 卸載" #~ msgid "" -#~ "Match incoming traffic originating from the given source port or port " -#~ "range on the client host." -#~ msgstr "匹配來自客戶端主機上指定源埠或源埠範圍的入站流量。" - -#~ msgid "Rewrite matched traffic to the given address." -#~ msgstr "將匹配流量的源位址改寫成指定位址。" - -#~ msgid "" -#~ "Rewrite matched traffic to the given source port. May be left empty to " -#~ "only rewrite the IP address." -#~ msgstr "將匹配流量的源埠改寫成指定埠。留空只改寫 IP 位址。" - -#~ msgid "Rewrite to source %s" -#~ msgstr "源位址改寫成 %s" - -#~ msgid "Rewrite to source %s, %s" -#~ msgstr "源位址改寫成 %s, %s" - -#~ msgid "SNAT IP address" -#~ msgstr "SNAT IP 位址" - -#~ msgid "SNAT port" -#~ msgstr "SNAT 埠" - -#~ msgid "Source NAT" -#~ msgstr "Source NAT" - -#~ msgid "" -#~ "Source NAT is a specific form of masquerading which allows fine grained " -#~ "control over the source IP used for outgoing traffic, for example to map " -#~ "multiple WAN addresses to internal subnets." +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." #~ msgstr "" -#~ "Source NAT 是一種特殊形式的封包偽裝,它允許精細的控制傳出流量的源 IP,例" -#~ "如:將多個 WAN 位址對映到內部子網。" - -#~ msgid "Start Time (hh:mm:ss)" -#~ msgstr "開始時間(hh:mm:ss)" - -#~ msgid "Stop Time (hh:mm:ss)" -#~ msgstr "停止時間(hh:mm:ss)" +#~ "為此區域上的出站流量啟用網路位址和連接埠轉換 (NAT 或 NAPT)。該選項在" +#~ "wan區域上通常處於啟用狀態。" #~ msgid "" -#~ "This page allows you to change advanced properties of the port forwarding " -#~ "entry. In most cases there is no need to modify those settings." -#~ msgstr "本頁面可以更改埠轉發的高階設定。大多數情況下,不需要更改這些設定。" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "已轉發 IPv4%{proto?,協定:%{proto#%{next?, }%{item.name}}}%{mark?,標記:%{mark.val}" +#~ "}" #~ msgid "" -#~ "This page allows you to change advanced properties of the traffic rule " -#~ "entry, such as matched source and destination hosts." -#~ msgstr "本頁面可以更改通訊規則的高階設定,比如:需匹配的源主機和目標主機。" - -#~ msgid "Unnamed SNAT" -#~ msgstr "未命名 SNAT" - -#~ msgid "" -#~ "You may specify multiple by selecting \"-- custom --\" and then entering " -#~ "protocols separated by space." -#~ msgstr "您也可以選擇“--自訂--”來定義多個協議,在多個協議間需加空格。" - -#~ msgid "Zone %q" -#~ msgstr "區域 %q" - -#~ msgid "traffic" -#~ msgstr "通訊" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "傳入 IPv4%{proto?,協定:%{proto#%{next?, }%{item.types?%{item.name}ICMP 包含類" +#~ "型:%{item.types#%{next?, }%{item}}:%{item." +#~ "name}}}}%{mark?,標記:%{mark.val}}%{helper?,幫手:%{helper.inv?%{helper." +#~ "val}:%{helper.val}}}" diff --git a/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json b/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json index f8a3553a7..f024dcfe2 100644 --- a/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json +++ b/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json @@ -49,6 +49,14 @@ } }, + "admin/network/firewall/ipsets": { + "title": "IP Sets", + "order": 45, + "action": { + "type": "view", + "path": "firewall/ipsets" + } + }, "admin/network/firewall/custom": { "title": "Custom Rules", @@ -56,6 +64,9 @@ "action": { "type": "view", "path": "firewall/custom" + }, + "depends": { + "fs": { "/usr/share/fw3/helpers.conf": "file" } } } } diff --git a/luci-app-firewall/root/usr/share/ucitrack/luci-app-firewall.json b/luci-app-firewall/root/usr/share/ucitrack/luci-app-firewall.json new file mode 100644 index 000000000..4d1d9f919 --- /dev/null +++ b/luci-app-firewall/root/usr/share/ucitrack/luci-app-firewall.json @@ -0,0 +1,9 @@ +{ + "config": "firewall", + "init": "firewall", + "affects": [ + "luci-splash", + "qos", + "miniupnpd" + ] +} diff --git a/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js b/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js index c8929e0fb..d5e20158e 100644 --- a/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js +++ b/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js @@ -32,7 +32,7 @@ return L.view.extend({ s.tab('advanced', _('Advanced Settings')); o = s.taboption('general', form.Flag, 'enable', _('Enabled')); - o.default = o.enabled; + o.rmempty = false; o = s.taboption('general',form.Value, 'label', _('Label')); o.rmempty = true; @@ -65,11 +65,9 @@ return L.view.extend({ o.rmempty = false; o = s.taboption('advanced', form.Flag, 'mptcp', _('MPTCP')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Flag, 'chacha20', _('chacha'), _('Force fallback cipher')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Value, 'timeout', _('Timeout')); @@ -78,7 +76,6 @@ return L.view.extend({ o.modalonly = true; o = s.taboption('advanced', form.Flag, 'multiqueue', _('Multiqueue')); - o.default = o.enabled; o.rmempty = false; o.modalonly = true; diff --git a/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po index cd96b6f5b..977d4d7e7 100644 --- a/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po +++ b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-15 14:46+0000\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -8,13 +8,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 msgid "Advanced Settings" msgstr "Configuration avancée" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:38 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 msgid "Client" msgstr "Client" @@ -22,7 +22,7 @@ msgstr "Client" msgid "Enabled" msgstr "Activer" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 msgid "Force fallback cipher" msgstr "Forcer le chiffrement de secours" @@ -39,7 +39,7 @@ msgstr "Glorytun TCP" msgid "Grant access to glorytun TCP" msgstr "Accorder l'accès à Glorytun TCP" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 msgid "Host" msgstr "Hôte" @@ -47,50 +47,50 @@ msgstr "Hôte" msgid "Instances" msgstr "Instances" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:52 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 msgid "Interface name" msgstr "Nom de l'interface" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 msgid "Key" msgstr "Clef" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:82 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 msgid "Label" msgstr "Étiquette" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:56 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 msgid "Local IP" msgstr "Adresse IP locale" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:64 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 msgid "MPTCP" msgstr "MPTCP" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 msgid "Mode" msgstr "Mode" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:77 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 msgid "Multiqueue" msgstr "Multiqueue" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 msgid "Port" msgstr "Port" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:60 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 msgid "Remote IP" msgstr "IP Distante" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:39 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 msgid "Server" msgstr "Serveur" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:72 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 msgid "Timeout" -msgstr "" +msgstr "Hors Délais" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 msgid "chacha" msgstr "Chacha" diff --git a/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po~ b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po~ new file mode 100644 index 000000000..b8618b9f4 --- /dev/null +++ b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:38 +msgid "Client" +msgstr "Client" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "Force fallback cipher" +msgstr "Forcer le chiffrement de secours" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "Glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "Accorder l'accès à Glorytun TCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Host" +msgstr "Hôte" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:52 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Key" +msgstr "Clef" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:82 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:56 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:64 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Mode" +msgstr "Mode" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:77 +msgid "Multiqueue" +msgstr "Multiqueue" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Port" +msgstr "Port" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:60 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:39 +msgid "Server" +msgstr "Serveur" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:72 +msgid "Timeout" +msgstr "Temporisation" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-tcp/po/ru/glorytun-tcp.po b/luci-app-glorytun-tcp/po/ru/glorytun-tcp.po new file mode 100644 index 000000000..5996b38c4 --- /dev/null +++ b/luci-app-glorytun-tcp/po/ru/glorytun-tcp.po @@ -0,0 +1,97 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 +msgid "Client" +msgstr "Клиент" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "Force fallback cipher" +msgstr "Принудительное резервное шифрование" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "Основные настройки" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "Glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "Полный доступ к glorytun TCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Host" +msgstr "Хост" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 +msgid "Key" +msgstr "Ключ" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Label" +msgstr "Метка" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 +msgid "Local IP" +msgstr "Локальный IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 +msgid "Mode" +msgstr "Режим" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 +msgid "Multiqueue" +msgstr "Мультиочередь" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Port" +msgstr "Порт" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 +msgid "Remote IP" +msgstr "Удаленный IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Server" +msgstr "Сервер" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 +msgid "Timeout" +msgstr "Таймаут" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-tcp/po/templates/glorytun-tcp.pot b/luci-app-glorytun-tcp/po/templates/glorytun-tcp.pot index 4f7759dc3..9cd0f6d60 100644 --- a/luci-app-glorytun-tcp/po/templates/glorytun-tcp.pot +++ b/luci-app-glorytun-tcp/po/templates/glorytun-tcp.pot @@ -5,7 +5,7 @@ msgstr "Content-Type: text/plain; charset=UTF-8" msgid "Advanced Settings" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:38 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 msgid "Client" msgstr "" @@ -13,7 +13,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 msgid "Force fallback cipher" msgstr "" @@ -30,7 +30,7 @@ msgstr "" msgid "Grant access to glorytun TCP" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 msgid "Host" msgstr "" @@ -38,50 +38,50 @@ msgstr "" msgid "Instances" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:52 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 msgid "Interface name" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 msgid "Key" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:82 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 msgid "Label" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:56 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 msgid "Local IP" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:64 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 msgid "MPTCP" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 msgid "Mode" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:77 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 msgid "Multiqueue" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 msgid "Port" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:60 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 msgid "Remote IP" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:39 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 msgid "Server" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:72 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 msgid "Timeout" msgstr "" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 msgid "chacha" msgstr "" diff --git a/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po index debdafdef..522561c56 100644 --- a/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po +++ b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po @@ -1,28 +1,28 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:03+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 msgid "Advanced Settings" msgstr "高级设置" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:38 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 msgid "Client" msgstr "客户端" #: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 msgid "Enabled" -msgstr "开启" +msgstr "启用" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 msgid "Force fallback cipher" msgstr "强制回退密码" @@ -39,7 +39,7 @@ msgstr "glorytun TCP" msgid "Grant access to glorytun TCP" msgstr "授予访问glorytun TCP的权限" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 msgid "Host" msgstr "主机" @@ -47,50 +47,50 @@ msgstr "主机" msgid "Instances" msgstr "实例" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:52 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 msgid "Interface name" msgstr "接口名称" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 msgid "Key" msgstr "秘钥" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:82 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 msgid "Label" msgstr "标签" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:56 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 msgid "Local IP" msgstr "本地IP" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:64 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 msgid "MPTCP" -msgstr "聚合" +msgstr "MPTCP" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 msgid "Mode" msgstr "模式" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:77 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 msgid "Multiqueue" msgstr "多队列" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 msgid "Port" msgstr "端口" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:60 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 msgid "Remote IP" msgstr "远程IP" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:39 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 msgid "Server" msgstr "服务器" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:72 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 msgid "Timeout" msgstr "超时" -#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 msgid "chacha" msgstr "chacha密码" diff --git a/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po~ b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po~ new file mode 100644 index 000000000..1db94cdb9 --- /dev/null +++ b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:21+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:38 +msgid "Client" +msgstr "客户端" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "开启" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "Force fallback cipher" +msgstr "强制回退密码" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "授予访问glorytun TCP的权限" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Host" +msgstr "主机" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:52 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Key" +msgstr "秘钥" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:82 +msgid "Label" +msgstr "标签" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:56 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:64 +msgid "MPTCP" +msgstr "聚合" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Mode" +msgstr "模式" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:77 +msgid "Multiqueue" +msgstr "多队列" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Port" +msgstr "端口" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:60 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:39 +msgid "Server" +msgstr "服务器" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:72 +msgid "Timeout" +msgstr "超时" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "chacha" +msgstr "chacha密码" diff --git a/luci-app-glorytun-tcp/root/etc/uci-defaults/1200-luci-glorytun b/luci-app-glorytun-tcp/root/etc/uci-defaults/1200-luci-glorytun index 9d0f93d85..e78973fe0 100644 --- a/luci-app-glorytun-tcp/root/etc/uci-defaults/1200-luci-glorytun +++ b/luci-app-glorytun-tcp/root/etc/uci-defaults/1200-luci-glorytun @@ -15,7 +15,7 @@ if [ "$(uci -q get network.glorytun)" = "" ] && [ "$(uci -q get network.omrvpn)" uci -q batch <<-EOF >/dev/null delete network.glorytun set network.glorytun=interface - set network.glorytun.ifname=tun0 + set network.glorytun.device=tun0 set network.glorytun.proto=dhcp set network.glorytun.ip4table=vpn set network.glorytun.multipath=off @@ -48,6 +48,7 @@ if [ "$(uci -q show firewall | grep Allow-All-LAN-to-VPN)" = "" ]; then set firewall.@rule[-1].name='Allow-All-LAN-to-VPN' set firewall.@rule[-1].dest='vpn' set firewall.@rule[-1].src='lan' + set firewall.@rule[-1].proto='all' commit firewall EOF fi diff --git a/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js b/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js index 762332468..b9e0681fb 100644 --- a/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js +++ b/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js @@ -40,12 +40,11 @@ return L.view.extend({ s.tab('advanced', _('Advanced Settings')); o = s.taboption('general', form.Flag, 'enable', _('Enabled')); - o.default = o.enabled; + o.rmempty = false; o = s.taboption('general',form.Value, 'label', _('Label')); o.rmempty = true; - o = s.taboption('general', form.ListValue, 'mode', _('Mode')); o.value('to',_('Client')); o.value('from',_('Server')); @@ -74,11 +73,9 @@ return L.view.extend({ o.rmempty = false; o = s.taboption('advanced', form.Flag, 'persist', _('Persist'), _('Keep the tunnel device after exiting')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Flag, 'chacha', _('chacha'), _('Force fallback cipher')); - o.default = o.enabled; o.modalonly = true; o = s.taboption('advanced', form.Value, 'kxtimeout', _('Key rotation timeout')); diff --git a/luci-app-glorytun-udp/po/fr/glorytun-udp.po b/luci-app-glorytun-udp/po/fr/glorytun-udp.po index 11849a015..cab674d18 100644 --- a/luci-app-glorytun-udp/po/fr/glorytun-udp.po +++ b/luci-app-glorytun-udp/po/fr/glorytun-udp.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-15 14:46+0000\n" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -8,21 +8,21 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.5.2\n" #: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 msgid "Advanced Settings" msgstr "Configuration avancée" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:46 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 msgid "Client" msgstr "Client" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:85 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 msgid "Clock sync tolerance" msgstr "Tolérance de synchronisation d'horloge" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:95 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 msgid "Dynamic rate detection" msgstr "Détection dynamique de la vitesse" @@ -30,7 +30,7 @@ msgstr "Détection dynamique de la vitesse" msgid "Enabled" msgstr "Activer" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 msgid "Force fallback cipher" msgstr "Forcer le chiffrement de secours" @@ -47,7 +47,7 @@ msgstr "Glorytun UDP" msgid "Grant access to glorytun UDP" msgstr "Accorder l'accès à Glorytun UDP" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 msgid "Host" msgstr "Hôte" @@ -55,54 +55,54 @@ msgstr "Hôte" msgid "Instances" msgstr "Instances" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:60 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 msgid "Interface name" msgstr "Nom de l'interface" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:90 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 msgid "Keep alive timeout" msgstr "Délai de maintien de la connexion (Keep Alive)" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 msgid "Keep the tunnel device after exiting" msgstr "Gardez le périphérique tunnel après avoir quitté" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 msgid "Key" msgstr "Clef" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:80 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 msgid "Key rotation timeout" msgstr "Délai de rotation des clés" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:99 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 msgid "Label" msgstr "Étiquette" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:64 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 msgid "Local IP" msgstr "Adresse IP locale" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 msgid "Mode" msgstr "Mode" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 msgid "Persist" msgstr "Persister" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 msgid "Port" msgstr "Port" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:68 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 msgid "Remote IP" msgstr "IP Distante" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:47 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 msgid "Server" msgstr "Serveur" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 msgid "chacha" msgstr "Chacha" diff --git a/luci-app-glorytun-udp/po/fr/glorytun-udp.po~ b/luci-app-glorytun-udp/po/fr/glorytun-udp.po~ new file mode 100644 index 000000000..6c7e564dc --- /dev/null +++ b/luci-app-glorytun-udp/po/fr/glorytun-udp.po~ @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:46 +msgid "Client" +msgstr "Client" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:85 +msgid "Clock sync tolerance" +msgstr "Tolérance de synchronisation d'horloge" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:95 +msgid "Dynamic rate detection" +msgstr "Détection dynamique de la vitesse" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "Force fallback cipher" +msgstr "Forcer le chiffrement de secours" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "Glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "Accorder l'accès à Glorytun UDP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Host" +msgstr "Hôte" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "Instances" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:60 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:90 +msgid "Keep alive timeout" +msgstr "Délai de maintien de la connexion (Keep Alive)" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Keep the tunnel device after exiting" +msgstr "Gardez le périphérique tunnel après avoir quitté" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Key" +msgstr "Clef" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:80 +msgid "Key rotation timeout" +msgstr "Délai de rotation des clés" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:99 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:64 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Mode" +msgstr "Mode" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Persist" +msgstr "Persister" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Port" +msgstr "Port" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:68 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:47 +msgid "Server" +msgstr "Serveur" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-udp/po/ru/glorytun-udp.po b/luci-app-glorytun-udp/po/ru/glorytun-udp.po new file mode 100644 index 000000000..29e624040 --- /dev/null +++ b/luci-app-glorytun-udp/po/ru/glorytun-udp.po @@ -0,0 +1,109 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 +msgid "Client" +msgstr "Клиент" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 +msgid "Clock sync tolerance" +msgstr "Допуск синхронизации часов" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 +msgid "Dynamic rate detection" +msgstr "Определение динамической скорости" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "Force fallback cipher" +msgstr "Принудительное резервное шифрование" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "Основные настройки" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "Glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "Полный доступ к glorytun UDP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Host" +msgstr "Хост" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 +msgid "Keep alive timeout" +msgstr "Таймаут активности" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Keep the tunnel device after exiting" +msgstr "Сохранить туннель после выхода" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 +msgid "Key" +msgstr "Ключ" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 +msgid "Key rotation timeout" +msgstr "Тайм-аут смены ключа" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Label" +msgstr "Метка" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 +msgid "Local IP" +msgstr "Локальный IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 +msgid "Mode" +msgstr "Режим" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Persist" +msgstr "Удерживать" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Port" +msgstr "Порт" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 +msgid "Remote IP" +msgstr "Удаленный IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Server" +msgstr "Сервер" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-udp/po/templates/glorytun-udp.pot b/luci-app-glorytun-udp/po/templates/glorytun-udp.pot index 04edec275..c292fcace 100644 --- a/luci-app-glorytun-udp/po/templates/glorytun-udp.pot +++ b/luci-app-glorytun-udp/po/templates/glorytun-udp.pot @@ -5,15 +5,15 @@ msgstr "Content-Type: text/plain; charset=UTF-8" msgid "Advanced Settings" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:46 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 msgid "Client" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:85 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 msgid "Clock sync tolerance" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:95 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 msgid "Dynamic rate detection" msgstr "" @@ -21,7 +21,7 @@ msgstr "" msgid "Enabled" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 msgid "Force fallback cipher" msgstr "" @@ -38,7 +38,7 @@ msgstr "" msgid "Grant access to glorytun UDP" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 msgid "Host" msgstr "" @@ -46,54 +46,54 @@ msgstr "" msgid "Instances" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:60 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 msgid "Interface name" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:90 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 msgid "Keep alive timeout" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 msgid "Keep the tunnel device after exiting" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 msgid "Key" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:80 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 msgid "Key rotation timeout" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:99 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 msgid "Label" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:64 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 msgid "Local IP" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 msgid "Mode" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 msgid "Persist" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 msgid "Port" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:68 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 msgid "Remote IP" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:47 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 msgid "Server" msgstr "" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 msgid "chacha" msgstr "" diff --git a/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po index e88aedcbb..14e382bbf 100644 --- a/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po +++ b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po @@ -1,36 +1,36 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:03+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 msgid "Advanced Settings" msgstr "高级设置" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:46 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 msgid "Client" msgstr "客户端" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:85 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 msgid "Clock sync tolerance" msgstr "时钟同步容限" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:95 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 msgid "Dynamic rate detection" msgstr "动态速率检测" #: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 msgid "Enabled" -msgstr "开启" +msgstr "启用" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 msgid "Force fallback cipher" msgstr "强制回退密码" @@ -47,7 +47,7 @@ msgstr "glorytun UDP" msgid "Grant access to glorytun UDP" msgstr "授予访问glorytun UDP的权限" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 msgid "Host" msgstr "主机" @@ -55,54 +55,54 @@ msgstr "主机" msgid "Instances" msgstr "实例" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:60 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 msgid "Interface name" msgstr "接口名称" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:90 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 msgid "Keep alive timeout" msgstr "保持超时" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 msgid "Keep the tunnel device after exiting" msgstr "退出后保留隧道设备" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 msgid "Key" msgstr "秘钥" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:80 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 msgid "Key rotation timeout" msgstr "秘钥轮换超时" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:99 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 msgid "Label" msgstr "标签" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:64 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 msgid "Local IP" msgstr "本地IP" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 msgid "Mode" msgstr "模式" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 msgid "Persist" msgstr "保持" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 msgid "Port" msgstr "端口" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:68 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 msgid "Remote IP" msgstr "远程IP" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:47 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 msgid "Server" msgstr "服务器" -#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 msgid "chacha" msgstr "chacha密码" diff --git a/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po~ b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po~ new file mode 100644 index 000000000..3491db1ab --- /dev/null +++ b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po~ @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:21+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:46 +msgid "Client" +msgstr "客户端" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:85 +msgid "Clock sync tolerance" +msgstr "时钟同步容限" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:95 +msgid "Dynamic rate detection" +msgstr "动态速率检测" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "开启" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "Force fallback cipher" +msgstr "强制回退密码" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "授予访问glorytun UDP的权限" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Host" +msgstr "主机" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "实例" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:60 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:90 +msgid "Keep alive timeout" +msgstr "保持超时" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Keep the tunnel device after exiting" +msgstr "退出后保留隧道设备" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Key" +msgstr "秘钥" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:80 +msgid "Key rotation timeout" +msgstr "秘钥轮换超时" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:99 +msgid "Label" +msgstr "标签" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:64 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Mode" +msgstr "模式" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Persist" +msgstr "保持" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Port" +msgstr "端口" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:68 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:47 +msgid "Server" +msgstr "服务器" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "chacha" +msgstr "chacha密码" diff --git a/luci-app-glorytun-udp/root/etc/uci-defaults/1201-luci-glorytun-udp b/luci-app-glorytun-udp/root/etc/uci-defaults/1201-luci-glorytun-udp index dbecf5b5b..ebe335318 100644 --- a/luci-app-glorytun-udp/root/etc/uci-defaults/1201-luci-glorytun-udp +++ b/luci-app-glorytun-udp/root/etc/uci-defaults/1201-luci-glorytun-udp @@ -11,7 +11,7 @@ if [ "$(uci -q get network.glorytun-udp)" = "" ] && [ "$(uci -q get network.omrv uci -q batch <<-EOF >/dev/null delete network.glorytun-udp set network.glorytun-udp=interface - set network.glorytun-udp.ifname=tun0 + set network.glorytun-udp.device=tun0 set network.glorytun-udp.proto=dhcp set network.glorytun-udp.ip4table=vpn set network.glorytun-udp.multipath=off diff --git a/luci-app-https-dns-proxy/Makefile b/luci-app-https-dns-proxy/Makefile deleted file mode 100644 index 80b150c5b..000000000 --- a/luci-app-https-dns-proxy/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2017-2018 Stan Grishin (stangri@melmac.net) -# This is free software, licensed under the GNU General Public License v3. - -include $(TOPDIR)/rules.mk - -PKG_LICENSE:=GPL-3.0-or-later -PKG_MAINTAINER:=Stan Grishin - -LUCI_TITLE:=DNS Over HTTPS Proxy Web UI -LUCI_DESCRIPTION:=Provides Web UI for DNS Over HTTPS Proxy -LUCI_DEPENDS:=+luci-compat +luci-mod-admin-full +https-dns-proxy -LUCI_PKGARCH:=all -PKG_RELEASE:=3 - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua b/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua deleted file mode 100644 index d236feae0..000000000 --- a/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua +++ /dev/null @@ -1,25 +0,0 @@ -module("luci.controller.https-dns-proxy", package.seeall) -function index() - if nixio.fs.access("/etc/config/https-dns-proxy") then - entry({"admin", "services", "https-dns-proxy"}, cbi("https-dns-proxy"), _("DNS Over HTTPS Proxy")) - entry({"admin", "services", "https-dns-proxy", "action"}, call("https_dns_proxy_action"), nil).leaf = true - end -end - -function https_dns_proxy_action(name) - local packageName = "https-dns-proxy" - if name == "start" then - luci.sys.init.start(packageName) - elseif name == "action" then - luci.util.exec("/etc/init.d/" .. packageName .. " reload >/dev/null 2>&1") - luci.util.exec("/etc/init.d/dnsmasq restart >/dev/null 2>&1") - elseif name == "stop" then - luci.sys.init.stop(packageName) - elseif name == "enable" then - luci.sys.init.enable(packageName) - elseif name == "disable" then - luci.sys.init.disable(packageName) - end - luci.http.prepare_content("text/plain") - luci.http.write("0") -end diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua deleted file mode 100644 index fc190437c..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - name = "Digitale-Gesellschaft", - label = _("Digitale Gesellschaft"), - resolver_url = "https://dns.digitale-gesellschaft.ch/dns-query", - bootstrap_dns = "185.95.218.42,185.95.218.43" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua deleted file mode 100644 index 86c4c56dc..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - name = "rubyfish.cn", - label = _("rubyfish.cn"), - resolver_url = "https://dns.rubyfish.cn/dns-query", - bootstrap_dns = "118.89.110.78,47.96.179.163" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua deleted file mode 100644 index 114d23ed5..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - name = "DNS.SB", - label = _("DNS.SB"), - resolver_url = "https://doh.dns.sb/dns-query", - bootstrap_dns = "185.222.222.222,185.184.222.222" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua deleted file mode 100644 index 56a409f91..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "AdGuard-Family", - label = _("AdGuard (Family Protection)"), - resolver_url = "https://dns-family.adguard.com/dns-query", - bootstrap_dns = "176.103.130.132,176.103.130.134", - help_link = "https://adguard.com/en/adguard-dns/overview.html", - help_link_text = "AdGuard.com" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua deleted file mode 100644 index 504070501..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "AdGuard-Standard", - label = _("AdGuard (Standard)"), - resolver_url = "https://dns.adguard.com/dns-query", - bootstrap_dns = "176.103.130.130,176.103.130.131", - help_link = "https://adguard.com/en/adguard-dns/overview.html", - help_link_text = "AdGuard.com" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-family.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-family.lua deleted file mode 100644 index e63bf14ad..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-family.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - name = "Cloudflare for Families", - label = _("Cloudflare for Families"), - resolver_url = "https://family.cloudflare-dns.com/dns-query", - bootstrap_dns = "1.1.1.3,1.0.0.3" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-malware.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-malware.lua deleted file mode 100644 index f114f91e0..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns-malware.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - name = "Cloudflare Malware", - label = _("Cloudflare Malware"), - resolver_url = "https://security.cloudflare-dns.com/dns-query", - bootstrap_dns = "1.1.1.2,1.0.0.2" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua deleted file mode 100644 index e8673d5d5..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - name = "Cloudflare", - label = _("Cloudflare"), - resolver_url = "https://cloudflare-dns.com/dns-query", - bootstrap_dns = "1.1.1.1,1.0.0.1" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua deleted file mode 100644 index 3dfe30936..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - name = "odvr-nic-cz", - label = _("ODVR (nic.cz)"), - resolver_url = "https://odvr.nic.cz/doh", - bootstrap_dns = "193.17.47.1,185.43.135.1" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua deleted file mode 100644 index 6eab04064..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - name = "Google", - label = _("Google"), - resolver_url = "https://dns.google/dns-query", - bootstrap_dns = "8.8.8.8,8.8.4.4", - default = true -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua deleted file mode 100644 index 22e6fffe4..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "LibreDNS (No Ads)", - label = _("LibreDNS (No Ads)"), - resolver_url = "https://doh.libredns.gr/ads", - bootstrap_dns = "116.202.176.26", - help_link = "https://libredns.gr/", - help_link_text = "LibreDNS.gr" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua deleted file mode 100644 index bd51e1be4..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "LibreDNS", - label = _("LibreDNS"), - resolver_url = "https://doh.libredns.gr/dns-query", - bootstrap_dns = "116.202.176.26", - help_link = "https://libredns.gr/", - help_link_text = "LibreDNS.gr" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua deleted file mode 100644 index eaa4b8370..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "Quad9-Recommended", - label = _("Quad 9 (Recommended)"), - resolver_url = "https://dns.quad9.net/dns-query", - bootstrap_dns = "9.9.9.9,149.112.112.112", - help_link = "https://www.quad9.net/doh-quad9-dns-servers/", - help_link_text = "Quad9.net" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua deleted file mode 100644 index 4d1914a0f..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "Quad9-Unsecured", - label = _("Quad 9 (Unsecured)"), - resolver_url = "https://dns10.quad9.net/dns-query", - bootstrap_dns = "9.9.9.10,149.112.112.10", - help_link = "https://www.quad9.net/doh-quad9-dns-servers/", - help_link_text = "Quad9.net" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua deleted file mode 100644 index 36fbeb39e..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "Quad9-ECS", - label = _("Quad 9 (Secured with ECS Support)"), - resolver_url = "https://dns11.quad9.net/dns-query", - bootstrap_dns = "9.9.9.11,149.112.112.11", - help_link = "https://www.quad9.net/doh-quad9-dns-servers/", - help_link_text = "Quad9.net" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua deleted file mode 100644 index 61ca444ef..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "Quad9-Secured", - label = _("Quad 9 (Secured)"), - resolver_url = "https://dns9.quad9.net/dns-query", - bootstrap_dns = "9.9.9.9,149.112.112.9", - help_link = "https://www.quad9.net/doh-quad9-dns-servers/", - help_link_text = "Quad9.net" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua deleted file mode 100644 index 5b4d90854..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "CleanBrowsing-Adult", - label = _("CleanBrowsing (Adult Filter)"), - resolver_url = "https://doh.cleanbrowsing.org/doh/adult-filter/", - bootstrap_dns = "185.228.168.168", - help_link = "https://cleanbrowsing.org/guides/dnsoverhttps", - help_link_text = "CleanBrowsing.org" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua deleted file mode 100644 index 47a0654d2..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "CleanBrowsing-Family", - label = _("CleanBrowsing (Family Filter)"), - resolver_url = "https://doh.cleanbrowsing.org/doh/family-filter/", - bootstrap_dns = "185.228.168.168", - help_link = "https://cleanbrowsing.org/guides/dnsoverhttps", - help_link_text = "CleanBrowsing.org" -} diff --git a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua b/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua deleted file mode 100644 index 6e370d513..000000000 --- a/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - name = "CleanBrowsing-Security", - label = _("CleanBrowsing (Security Filter)"), - resolver_url = "https://doh.cleanbrowsing.org/doh/security-filter/", - bootstrap_dns = "185.228.168.168", - help_link = "https://cleanbrowsing.org/guides/dnsoverhttps", - help_link_text = "CleanBrowsing.org" -} diff --git a/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua b/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua deleted file mode 100644 index d914bf09a..000000000 --- a/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua +++ /dev/null @@ -1,172 +0,0 @@ -local sys = require "luci.sys" -local util = require "luci.util" -local fs = require "nixio.fs" -local dispatcher = require "luci.dispatcher" -local i18n = require "luci.i18n" -local uci = require("luci.model.uci").cursor() - -local packageName = "https-dns-proxy" -local providers_dir = "/usr/lib/lua/luci/" .. packageName .. "/providers/" -local helperText = "" - -function create_helper_text() - local initText = "
" .. translate("For more information on different options check") .. " " - for filename in fs.dir(providers_dir) do - local p_func = loadfile(providers_dir .. filename) - setfenv(p_func, { _ = i18n.translate }) - local p = p_func() - if p.help_link then - local url, domain - url = p.help_link - domain = p.help_link_text or url:match('^%w+://([^/]+)') - if not helperText:find(domain) then - if helperText == "" then - helperText = initText - else - helperText = helperText .. ", " - end - helperText = helperText .. [[]] .. domain .. [[]] - end - end - end - if helperText ~= "" then - local a = helperText:gsub('(.*),%s.*$', '%1') - helperText = a .. " " .. translate("and") .. helperText:sub(#a + 2) .. "." - end -end - -function get_provider_name(value) - for filename in fs.dir(providers_dir) do - local p_func = loadfile(providers_dir .. filename) - setfenv(p_func, { _ = i18n.translate }) - local p = p_func() - value = value:gsub('[%p%c%s]', '') - p.url_match = p.resolver_url:gsub('[%p%c%s]', '') - if value:match(p.url_match) then - return p.label - end - end - return translate("Unknown Provider") -end - -local tmpfsStatus, tmpfsStatusCode -local ubusStatus = util.ubus("service", "list", { name = packageName }) -local tmpfsVersion = tostring(util.trim(sys.exec("opkg list-installed " .. packageName .. " | awk '{print $3}'"))) - -if not tmpfsVersion or tmpfsVersion == "" then - tmpfsStatusCode = -1 - tmpfsVersion = "" - tmpfsStatus = packageName .. " " .. translate("is not installed or not found") -else - tmpfsVersion = " [" .. packageName .. " " .. tmpfsVersion .. "]" - if not ubusStatus or not ubusStatus[packageName] then - tmpfsStatusCode = 0 - tmpfsStatus = translate("Stopped") - if not luci.sys.init.enabled(packageName) then - tmpfsStatus = tmpfsStatus .. " (" .. translate("disabled") .. ")" - end - else - tmpfsStatusCode, tmpfsStatus = 1, "" - for n = 1,1000 do - if ubusStatus and ubusStatus[packageName] and - ubusStatus[packageName]["instances"] and - ubusStatus[packageName]["instances"]["instance" .. n] and - ubusStatus[packageName]["instances"]["instance" .. n]["running"] then - local value, k, v, url, url_flag, la, la_flag, lp, lp_flag - for k, v in pairs(ubusStatus[packageName]["instances"]["instance" .. n]["command"]) do - if la_flag then la, la_flag = v, false end - if lp_flag then lp, lp_flag = v, false end - if url_flag then url, url_flag = v, false end - if v == "-a" then la_flag = true end - if v == "-p" then lp_flag = true end - if v == "-r" then url_flag = true end - end - la = la or "127.0.0.1" - lp = lp or n + 5053 - tmpfsStatus = tmpfsStatus .. translate("Running") .. ": " .. get_provider_name(url) .. " " .. translate("DoH") .. " " .. translate("at") .. " " .. la .. ":" .. lp .. "\n" - else - break - end - end - end -end - -m = Map("https-dns-proxy", translate("DNS Over HTTPS Proxy Settings")) - -h = m:section(TypedSection, "_dummy", translate("Service Status") .. tmpfsVersion) -h.template = "cbi/nullsection" -ss = h:option(DummyValue, "_dummy", translate("Service Status")) -if tmpfsStatusCode == -1 then - ss.template = packageName .. "/status" - ss.value = tmpfsStatus -else - if tmpfsStatusCode == 0 then - ss.template = packageName .. "/status" - else - ss.template = packageName .. "/status-textarea" - end - ss.value = tmpfsStatus - buttons = h:option(DummyValue, "_dummy") - buttons.template = packageName .. "/buttons" -end - -create_helper_text() -s3 = m:section(TypedSection, "https-dns-proxy", translate("Instances"), translate("When you add/remove any instances below, they will be used to override the 'DNS forwardings' section of ") - .. [[ ]] - .. translate("DHCP and DNS") .. [[]] .. "." .. helperText) -s3.template = "cbi/tblsection" -s3.sortable = false -s3.anonymous = true -s3.addremove = true - -prov = s3:option(ListValue, "resolver_url", translate("Resolver")) -for filename in fs.dir(providers_dir) do - local p_func = loadfile(providers_dir .. filename) - setfenv(p_func, { _ = i18n.translate }) - local p = p_func() - prov:value(p.resolver_url, p.label) - if p.default then - prov.default = p.resolver_url - end -end -prov.forcewrite = true -prov.write = function(self, section, value) - if not value then return end - for filename in fs.dir(providers_dir) do - local p_func = loadfile(providers_dir .. filename) - setfenv(p_func, { _ = i18n.translate }) - local p = p_func() - value = value:gsub('[%p%c%s]', '') - p.url_match = p.resolver_url:gsub('[%p%c%s]', '') - if value:match(p.url_match) then - uci:set(packageName, section, "bootstrap_dns", p.bootstrap_dns) - uci:set(packageName, section, "resolver_url", p.resolver_url) - end - end - uci:save(packageName) -end - -la = s3:option(Value, "listen_addr", translate("Listen address")) -la.datatype = "host" -la.placeholder = "127.0.0.1" -la.rmempty = true - -local n = 0 -uci:foreach(packageName, packageName, function(s) - if s[".name"] == section then - return false - end - n = n + 1 -end) - -lp = s3:option(Value, "listen_port", translate("Listen port")) -lp.datatype = "port" -lp.value = n + 5053 - -sa = s3:option(Value, "edns_subnet", translate("EDNS client subnet")) -sa.rmempty = true - -ps = s3:option(Value, "proxy_server", translate("Proxy server")) -ps.rmempty = true - -return m diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm deleted file mode 100644 index b7fcd472e..000000000 --- a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm +++ /dev/null @@ -1,77 +0,0 @@ -<%# Copyright 2020 Stan Grishin -%> - -<%+https-dns-proxy/css%> -<%+https-dns-proxy/js%> - -<%- - local packageName = "https-dns-proxy" - local serviceRunning, serviceEnabled = false, false; - - serviceEnabled = luci.sys.init.enabled(packageName) - local ubusStatus = luci.util.ubus("service", "list", { name = packageName }) - if ubusStatus and ubusStatus[packageName] then - serviceRunning = true - end - - if serviceEnabled then - btn_start_status = true - btn_action_status = true - btn_stop_status = true - btn_enable_status = false - btn_disable_status = true - else - btn_start_status = false - btn_action_status = false - btn_stop_status = false - btn_enable_status = true - btn_disable_status = false - end - if serviceRunning then - btn_start_status = false - btn_action_status = true - btn_stop_status = true - else - btn_action_status = false - btn_stop_status = false - end --%> - -
-
- - - - - - -   -   -   -   - - - - -
-
- -<%-if not btn_start_status then%> - -<%-end%> -<%-if not btn_action_status then%> - -<%-end%> -<%-if not btn_stop_status then%> - -<%-end%> -<%-if not btn_enable_status then%> - -<%-end%> -<%-if not btn_disable_status then%> - -<%-end%> diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/css.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/css.htm deleted file mode 100644 index 6fb3d51d3..000000000 --- a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/css.htm +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm deleted file mode 100644 index fac92a392..000000000 --- a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm +++ /dev/null @@ -1,60 +0,0 @@ - - diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status-textarea.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status-textarea.htm deleted file mode 100644 index 3840cd19d..000000000 --- a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status-textarea.htm +++ /dev/null @@ -1,13 +0,0 @@ -<%# -Copyright 2017-2019 Stan Grishin (stangri@melmac.net) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+cbi/valueheader%> - - - -<%+cbi/valuefooter%> diff --git a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status.htm b/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status.htm deleted file mode 100644 index c45342840..000000000 --- a/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/status.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# -Copyright 2017-2018 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+cbi/valueheader%> - - - -<%+cbi/valuefooter%> diff --git a/luci-app-https-dns-proxy/po/bg/https-dns-proxy.po b/luci-app-https-dns-proxy/po/bg/https-dns-proxy.po deleted file mode 100644 index 9187f341c..000000000 --- a/luci-app-https-dns-proxy/po/bg/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: bg\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/ca/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ca/https-dns-proxy.po deleted file mode 100644 index dbdb2ea03..000000000 --- a/luci-app-https-dns-proxy/po/ca/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: ca\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/cs/https-dns-proxy.po b/luci-app-https-dns-proxy/po/cs/https-dns-proxy.po deleted file mode 100644 index aa4cd1f97..000000000 --- a/luci-app-https-dns-proxy/po/cs/https-dns-proxy.po +++ /dev/null @@ -1,188 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-02-02 09:02+0000\n" -"Last-Translator: Pavel Borecki \n" -"Language-Team: Czech \n" -"Language: cs\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.11-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP a DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Povolit" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Více informací o dalších možnostech" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Instance" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Naslouchající adresa" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Naslouchající port" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Proxy server" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Pokud níže přidáte nebo odeberete instance, budou použity k přepsání sekce " -"'DNS forwardings' v" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "a" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" - -#~ msgid "Provider" -#~ msgstr "Poskytovatel" - -#~ msgid "Subnet address" -#~ msgstr "Adresa podsítě" - -#~ msgid "HTTPS DNS Proxy" -#~ msgstr "HTTPS DNS Proxy" - -#~ msgid "HTTPS DNS Proxy Settings" -#~ msgstr "Nastavení HTTPS DNS Proxy" diff --git a/luci-app-https-dns-proxy/po/de/https-dns-proxy.po b/luci-app-https-dns-proxy/po/de/https-dns-proxy.po deleted file mode 100644 index 2ac46c51c..000000000 --- a/luci-app-https-dns-proxy/po/de/https-dns-proxy.po +++ /dev/null @@ -1,197 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-03-05 08:06+0000\n" -"Last-Translator: Tobias Strobel \n" -"Language-Team: German \n" -"Language: de\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (Familienschutz)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (Standard)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Familienfilter)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Familienfilter)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Sicherheitsfilter)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP und DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "DNS über HTTPS Proxy" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "DNS über HTTPS Proxyeinstellungen" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Deaktivieren" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "EDNS-Clientsubnetz" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Aktivieren" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Weitere Informationen zu den verschiedenen Optionen finden Sie unter" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Instanzen" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Listen-Adresse" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Listen-Port" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Lade" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Proxyserver" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (empfohlen)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (gesichert mit ECS-Unterstützung)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (gesichert)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (ungesichert)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Neu laden" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Resolver" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "Laufend" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Dienststatus" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Start" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Stoppen" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Angehalten" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Unbekannter Anbieter" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Wenn Sie untenstehende Instanzen hinzufügen/entfernen, werden sie für den " -"Abschnitt 'DNS-Weiterleitungen' verwendet von" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "und" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "bei" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "ist nicht installiert oder nicht gefunden" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" - -#~ msgid "DNS over HTTPS Proxy" -#~ msgstr "DNS über HTTPS Proxy" - -#~ msgid "DNS over HTTPS Proxy Settings" -#~ msgstr "DNS über HTTPS Proxy-Einstellungen" - -#~ msgid "Provider" -#~ msgstr "Anbieter" - -#~ msgid "Subnet address" -#~ msgstr "Subnetzadresse" - -#~ msgid "Uknown Provider" -#~ msgstr "Bekannter Anbieter" - -#~ msgid "HTTPS DNS Proxy" -#~ msgstr "HTTPS-DNS-Proxy" - -#~ msgid "HTTPS DNS Proxy Settings" -#~ msgstr "HTTPS-DNS-Proxyeinstellungen" diff --git a/luci-app-https-dns-proxy/po/el/https-dns-proxy.po b/luci-app-https-dns-proxy/po/el/https-dns-proxy.po deleted file mode 100644 index 2a8198cae..000000000 --- a/luci-app-https-dns-proxy/po/el/https-dns-proxy.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2019-12-03 08:25+0000\n" -"Last-Translator: Tavaninja \n" -"Language-Team: Greek \n" -"Language: el\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Φόρτωση" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/en/https-dns-proxy.po b/luci-app-https-dns-proxy/po/en/https-dns-proxy.po deleted file mode 100644 index 4c462b5c4..000000000 --- a/luci-app-https-dns-proxy/po/en/https-dns-proxy.po +++ /dev/null @@ -1,176 +0,0 @@ -msgid "" -msgstr "" -"Language: en\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua:3 -msgid "LibreDNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua:3 -msgid "LibreDNS (No Ads)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/es/https-dns-proxy.po b/luci-app-https-dns-proxy/po/es/https-dns-proxy.po deleted file mode 100644 index 106045fbe..000000000 --- a/luci-app-https-dns-proxy/po/es/https-dns-proxy.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2020-01-01 23:07+0000\n" -"Last-Translator: Franco Castillo \n" -"Language-Team: Spanish \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (Protección familiar)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (estándar)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Filtro para adultos)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Filtro familiar)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Filtro de seguridad)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP y DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "DNS sobre proxy HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "Configuración de DNS sobre proxy HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Sociedad digital" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Desactivar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "Subred de cliente EDNS" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Activar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Para obtener más información sobre diferentes opciones, consulte" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Instancias" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Escuchar dirección" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Puerto" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Cargando" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Servidor proxy" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (recomendado)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (Asegurado con soporte ECS)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (Asegurado)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (No asegurado)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Recargar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Resolvedor" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "Corriendo" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Estado del servicio" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Iniciar" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Detener" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Detenido" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Proveedor desconocido" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Cuando agregue/elimine las instancias a continuación, se utilizarán para " -"anular la sección 'Reenvíos DNS' de" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "y" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "a" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "no está instalado o no se encuentra" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" - -#~ msgid "DNS over HTTPS Proxy" -#~ msgstr "DNS sobre proxy HTTPS" - -#~ msgid "DNS over HTTPS Proxy Settings" -#~ msgstr "Configuración de DNS sobre proxy HTTPS" - -#~ msgid "Provider" -#~ msgstr "Proveedor" - -#~ msgid "Subnet address" -#~ msgstr "Direccion de subred" - -#~ msgid "Uknown Provider" -#~ msgstr "Proveedor Desconocido" - -#~ msgid "HTTPS DNS Proxy" -#~ msgstr "Proxy DNS HTTPS" - -#~ msgid "HTTPS DNS Proxy Settings" -#~ msgstr "Configuración de proxy HTTPS DNS" - -#~ msgid "Group name" -#~ msgstr "Nombre del grupo" - -#~ msgid "User name" -#~ msgstr "Nombre de usuario" diff --git a/luci-app-https-dns-proxy/po/fr/https-dns-proxy.po b/luci-app-https-dns-proxy/po/fr/https-dns-proxy.po deleted file mode 100644 index c9259dae9..000000000 --- a/luci-app-https-dns-proxy/po/fr/https-dns-proxy.po +++ /dev/null @@ -1,176 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-03-11 23:49+0000\n" -"Last-Translator: Hydci \n" -"Language-Team: French \n" -"Language: fr\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (protection de la famille)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (Standard)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Filtre Adulte)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Filtre Famille)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Filtre Sécurité)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP et DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "Proxy DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "Paramètres du Proxy DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Société Digitale" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Désactiver" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "Sous-réseau client EDNS" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Activer" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Pour plus d'informations sur les différentes options, consultez" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Instances" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Adresse d'écoute" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Port d'écoute" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Chargement" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Serveur proxy" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (recommandé)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (sécurisé avec prise en charge ECS)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (sécurisé)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (non sécurisé)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Recharger" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Résolveur" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "En cours d'exécution" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Statut du service" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Démarrer" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Arrêter" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Arrêté" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Proveedor desconocido" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Lorsque vous ajoutez/supprimez des instances ci-dessous, elles seront " -"utilisées pour passer outre la section \"redirections DNS\" de" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "et" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "à" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "n'est pas installé ou introuvable" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/he/https-dns-proxy.po b/luci-app-https-dns-proxy/po/he/https-dns-proxy.po deleted file mode 100644 index 3b445c846..000000000 --- a/luci-app-https-dns-proxy/po/he/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: he\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/hi/https-dns-proxy.po b/luci-app-https-dns-proxy/po/hi/https-dns-proxy.po deleted file mode 100644 index 49b6f01a2..000000000 --- a/luci-app-https-dns-proxy/po/hi/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: hi\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/hu/https-dns-proxy.po b/luci-app-https-dns-proxy/po/hu/https-dns-proxy.po deleted file mode 100644 index 2586d5604..000000000 --- a/luci-app-https-dns-proxy/po/hu/https-dns-proxy.po +++ /dev/null @@ -1,176 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-01-01 23:07+0000\n" -"Last-Translator: Balázs Úr \n" -"Language-Team: Hungarian \n" -"Language: hu\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (családvédelem)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (szabványos)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (felnőtt szűrő)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (családszűrő)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (biztonsági szűrő)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP és DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "DNS HTTPS-proxy fölött" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "DNS HTTPS-proxy fölött beállításai" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Letiltás" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "EDNS ügyfélalhálózat" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Engedélyezés" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "A különböző beállításokkal kapcsolatos további információkért nézze meg" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Példányok" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Cím figyelése" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Port figyelése" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Betöltés" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Proxy-kiszolgáló" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (ajánlott)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (biztonságos ECS támogatással)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (biztonságos)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (nem biztonságos)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Újratöltés" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Feloldó" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "Fut" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Szolgáltatás állapota" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Indítás" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Leállítás" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Leállítva" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Ismeretlen szolgáltató" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Ha bármely példányt hozzáadja vagy eltávolítja lent, akkor azok lesznek " -"használva a „DNS továbbítások” szakaszának felülbírálását ennek:" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "és" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "ekkor:" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "nincs telepítve vagy nem található" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/it/https-dns-proxy.po b/luci-app-https-dns-proxy/po/it/https-dns-proxy.po deleted file mode 100644 index 4d2faf50b..000000000 --- a/luci-app-https-dns-proxy/po/it/https-dns-proxy.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-03-07 12:33+0000\n" -"Last-Translator: Giuseppe Valitutto \n" -"Language-Team: Italian \n" -"Language: it\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Disabilita" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Abilita" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Caricamento" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/ja/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ja/https-dns-proxy.po deleted file mode 100644 index a3aa6bc9a..000000000 --- a/luci-app-https-dns-proxy/po/ja/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: ja\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/ko/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ko/https-dns-proxy.po deleted file mode 100644 index 5a42245b7..000000000 --- a/luci-app-https-dns-proxy/po/ko/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: ko\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/mr/https-dns-proxy.po b/luci-app-https-dns-proxy/po/mr/https-dns-proxy.po deleted file mode 100644 index 43cc03427..000000000 --- a/luci-app-https-dns-proxy/po/mr/https-dns-proxy.po +++ /dev/null @@ -1,176 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-02-07 09:19+0000\n" -"Last-Translator: Prachi Joshi \n" -"Language-Team: Marathi \n" -"Language: mr\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.11-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "अ‍ॅडगार्ड (कौटुंबिक संरक्षण)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "अ‍ॅडगार्ड (मानक)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "क्लीन ब्राउझिंग (प्रौढ फिल्टर)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "क्लीन ब्राउझिंग (फॅमिली फिल्टर)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "क्लीन ब्राउझिंग (सुरक्षा फिल्टर)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "क्लाउडफ्लेअर" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "डीएचसीपी आणि डीएनएस" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "एचटीटीपीएस प्रॉक्सी वर डीएनएस" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "एचटीटीपीएस प्रॉक्सी सेटिंग वरील डीएनएस" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "डीएनएस.एसबी" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "डिजिटेल गसेल्सशाफ्ट" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "अक्षम करा" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "ईडीएनएस क्लायंट सबनेट" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "सक्षम करा" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "वेगवेगळ्या पर्यायांवर अधिक माहितीसाठी तपासा" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "गूगल" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "उदाहरणे" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "ऐकण्याचा पत्ता" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "ऐकण्याचा पत्ता" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "लोड करीत आहे" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "प्रॉक्सी सर्व्हर" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (शिफारस केलेले)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (ईसीएस समर्थनासह सुरक्षित)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (सुरक्षित)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (असुरक्षित)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "रीलोड करा" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "निराकरणकर्ता" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "चालू आहे" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "सेवा स्थिती" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "प्रारंभ करा" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "थांबा" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "बंद" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "अज्ञात प्रदाता" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"जेव्हा आपण खाली कोणतीही उदाहरणे जोडता / काढता तेव्हा ती 'डीएनएस फॉरवर्डिंग' " -"विभागाच्या अधिलिखितसाठी वापरली जाईल" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "आणि" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "येथे" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "स्थापित केलेले नाही किंवा सापडले नाही" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/ms/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ms/https-dns-proxy.po deleted file mode 100644 index 26b756b07..000000000 --- a/luci-app-https-dns-proxy/po/ms/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: ms\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/nb_NO/https-dns-proxy.po b/luci-app-https-dns-proxy/po/nb_NO/https-dns-proxy.po deleted file mode 100644 index 63734bc2e..000000000 --- a/luci-app-https-dns-proxy/po/nb_NO/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: nb_NO\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/pl/https-dns-proxy.po b/luci-app-https-dns-proxy/po/pl/https-dns-proxy.po deleted file mode 100644 index ddfc9516e..000000000 --- a/luci-app-https-dns-proxy/po/pl/https-dns-proxy.po +++ /dev/null @@ -1,198 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-04-02 19:50+0000\n" -"Last-Translator: Marcin Net \n" -"Language-Team: Polish \n" -"Language: pl\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (Ochrona rodzinna)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (Standardowy)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Filtr treści dla dorosłych)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Filtr rodzinny)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Filtr bezpieczeństwa)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP i DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "Ustawienia DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Wyłącz" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "Podsieć klienta EDNS" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Włącz" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Aby uzyskać więcej informacji na temat różnych opcji, sprawdź" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Instancje" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Nasłuchiwany adres" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Nasłuchiwany port" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Ładowanie" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Serwer proxy" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (Zalecane)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (Zabezpieczony z obsługą ECS)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (Zabezpieczony)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (Niezabezpieczony)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Przeładuj" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Dostawca" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "Działa" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Status usługi" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Uruchom" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Stop" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Zatrzymany" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Nieznany dostawca" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Po dodaniu/usunięciu dowolnej instancji poniżej, zastąpią one ustawienia " -"sekcji 'Przekazywania DNS' w" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "i" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "na" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "nie jest zainstalowany lub nie znaleziono" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" - -#~ msgid "DNS over HTTPS Proxy" -#~ msgstr "Proxy DNS over HTTPS" - -#~ msgid "DNS over HTTPS Proxy Settings" -#~ msgstr "Ustawiania proxy DNS over HTTPS" - -#~ msgid "Provider" -#~ msgstr "Dostawca" - -#~ msgid "Subnet address" -#~ msgstr "Adres podsieci" - -#~ msgid "Uknown Provider" -#~ msgstr "Nieznany dostawca" - -#~ msgid "HTTPS DNS Proxy" -#~ msgstr "HTTPS DNS Proxy" - -#~ msgid "HTTPS DNS Proxy Settings" -#~ msgstr "Ustawienia Proxy HTTPS DNS" diff --git a/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po b/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po deleted file mode 100644 index 347238f56..000000000 --- a/luci-app-https-dns-proxy/po/pt/https-dns-proxy.po +++ /dev/null @@ -1,197 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-01-02 16:07+0000\n" -"Last-Translator: ssantos \n" -"Language-Team: Portuguese \n" -"Language: pt\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.10\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (Proteção da Família)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (Padrão)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Filtro Adulto)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Filtro para a Familia)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Filtro de Segurança)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "Proxy de DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "Configurações de Proxy de DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Desativar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "Sub-rede de clientes EDNS" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Ativar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Para obter mais informações sobre opções diferentes, verifique" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Instâncias" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Endereço de escuta" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Porta de escuta" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "A carregar" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Servidor proxy" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (Recomendado)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (Protegido com Suporte de ECS)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (Seguro)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (Sem Segurança)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Recarregar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Resolvedor" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "Executando" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Estado do Serviço" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Iniciar" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Parar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Parado" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Provedor Desconhecido" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Quando adicionar/remover quaisquer instâncias abaixo, serão usadas para " -"substituir a seção 'DNS forwardings' de" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "e" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "em" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "não está instalado ou não foi encontrado" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" - -#~ msgid "DNS over HTTPS Proxy" -#~ msgstr "Proxy de DNS sobre HTTPS" - -#~ msgid "DNS over HTTPS Proxy Settings" -#~ msgstr "Configurações de Proxy DNS sobre HTTPS" - -#~ msgid "Provider" -#~ msgstr "Provedor" - -#~ msgid "Subnet address" -#~ msgstr "Endereço de sub-rede" - -#~ msgid "Uknown Provider" -#~ msgstr "Provedor Desconhecido" - -#~ msgid "HTTPS DNS Proxy" -#~ msgstr "Proxy de DNS HTTPS" - -#~ msgid "HTTPS DNS Proxy Settings" -#~ msgstr "Configurações de proxy HTTPS DNS" diff --git a/luci-app-https-dns-proxy/po/pt_BR/https-dns-proxy.po b/luci-app-https-dns-proxy/po/pt_BR/https-dns-proxy.po deleted file mode 100644 index a0bc44ca4..000000000 --- a/luci-app-https-dns-proxy/po/pt_BR/https-dns-proxy.po +++ /dev/null @@ -1,191 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-02-21 21:18+0000\n" -"Last-Translator: Wellington Terumi Uemura \n" -"Language-Team: Portuguese (Brazil) \n" -"Language: pt_BR\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.11.1\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (Proteção Familiar)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (Padrão)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Filtro Adulto)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Filtro Familiar)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Filtro de Segurança)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "DNS sobre Proxy HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "Configurações de Proxy DNS sobre HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Desativar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "Sub-rede de clientes EDNS" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Ativar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Para obter mais informações sobre diferentes opções, verifique" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Instâncias" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Escutar endereço" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Porta de escuta" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Carregando" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Servidor proxy" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (Preferível)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (Protegido com Suporte a ECS)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (Seguro)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (Sem Segurança)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Recarregar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Resolvedor" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "Em execução" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Condição do Serviço" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Iniciar" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Parar" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Parado" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Provedor Desconhecido" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" -"Quando você adiciona/remove quaisquer instâncias abaixo, elas serão usadas " -"para substituir a seção 'Encaminhamentos DNS' de" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "e" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "em" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "não está instalado ou não foi encontrado" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" - -#~ msgid "DNS over HTTPS Proxy" -#~ msgstr "DNS sobre Proxy HTTPS" - -#~ msgid "DNS over HTTPS Proxy Settings" -#~ msgstr "Configurações de DNS sobre Proxy HTTPS" - -#~ msgid "Provider" -#~ msgstr "Provedor" - -#~ msgid "Subnet address" -#~ msgstr "Endereço de sub-rede" - -#~ msgid "Uknown Provider" -#~ msgstr "Provedor Desconhecido" diff --git a/luci-app-https-dns-proxy/po/ro/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ro/https-dns-proxy.po deleted file mode 100644 index fbffd76c0..000000000 --- a/luci-app-https-dns-proxy/po/ro/https-dns-proxy.po +++ /dev/null @@ -1,175 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-01-10 12:24+0000\n" -"Last-Translator: Alexandru Stan \n" -"Language-Team: Romanian \n" -"Language: ro\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" -"X-Generator: Weblate 3.10.1\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Dezactivează" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Activează" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Încărcare" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Pornește" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/ru/https-dns-proxy.po b/luci-app-https-dns-proxy/po/ru/https-dns-proxy.po deleted file mode 100644 index 506cc926d..000000000 --- a/luci-app-https-dns-proxy/po/ru/https-dns-proxy.po +++ /dev/null @@ -1,175 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-03-24 16:46+0000\n" -"Last-Translator: Константин \n" -"Language-Team: Russian \n" -"Language: ru\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (Семейная защита)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (Стандарт)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Фильтр для взрослых)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Семейный фильтр)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Фильтр безопасности)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP и DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "Настройки DNS Over HTTPS" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Отключить" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "Клиентская подсеть EDNS" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Включить" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Для получения дополнительной информации о различных опциях, проверьте" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Адрес" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Порт" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Загрузка" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Прокси сервер" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (Рекомендуется)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (Защищено поддержкой ECS)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (Защищен)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Перезапустить" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "Поставщик" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "Запущен" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Статус сервиса" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Запустить" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Остановить" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Остановлено" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Неизвестный поставщик" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "и" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "не установлен или не найден" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/sk/https-dns-proxy.po b/luci-app-https-dns-proxy/po/sk/https-dns-proxy.po deleted file mode 100644 index 802f26451..000000000 --- a/luci-app-https-dns-proxy/po/sk/https-dns-proxy.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-04-04 17:35+0000\n" -"Last-Translator: Dušan Kazik \n" -"Language-Team: Slovak \n" -"Language: sk\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP a DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Zakázať" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Spustiť" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Zastaviť" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/sv/https-dns-proxy.po b/luci-app-https-dns-proxy/po/sv/https-dns-proxy.po deleted file mode 100644 index 88edf2604..000000000 --- a/luci-app-https-dns-proxy/po/sv/https-dns-proxy.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2019-12-03 08:25+0000\n" -"Last-Translator: Mattias Münster \n" -"Language-Team: Swedish \n" -"Language: sv\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP och DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Inaktivera" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Aktivera" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Lyssningsadress" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Lyssningsport" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Laddar" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "Ladda om" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Starta" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Stoppad" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/templates/https-dns-proxy.pot b/luci-app-https-dns-proxy/po/templates/https-dns-proxy.pot deleted file mode 100644 index 6b7877f26..000000000 --- a/luci-app-https-dns-proxy/po/templates/https-dns-proxy.pot +++ /dev/null @@ -1,177 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:116 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:94 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:57 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:86 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:166 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:54 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:13 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:114 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh.lua:3 -msgid "LibreDNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/gr.libredns.doh-ads.lua:3 -msgid "LibreDNS (No Ads)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:149 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:162 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:169 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:44 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:122 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:86 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:96 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:98 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:47 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:49 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:114 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:34 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:86 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -msgid "disabled" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:59 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/tr/https-dns-proxy.po b/luci-app-https-dns-proxy/po/tr/https-dns-proxy.po deleted file mode 100644 index aa8333eab..000000000 --- a/luci-app-https-dns-proxy/po/tr/https-dns-proxy.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2019-12-09 20:04+0000\n" -"Last-Translator: İsmail Karslı \n" -"Language-Team: Turkish \n" -"Language: tr\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Durdur" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po b/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po deleted file mode 100644 index 7c09b62e8..000000000 --- a/luci-app-https-dns-proxy/po/uk/https-dns-proxy.po +++ /dev/null @@ -1,175 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2020-03-11 01:51+0000\n" -"Last-Translator: Olexandr Nesterenko \n" -"Language-Team: Ukrainian \n" -"Language: uk\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" -"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard (Сімейний захист)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard (Стандарт)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing (Віковий фільтр)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing (Сімейний фільтр)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing (Безпечний фільтр)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP та DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "DNS через HTTPS проксі" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "Налаштування DNS через HTTPS проксі" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "Вимкнути" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "Клієнтська підмережа EDNS" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "Увімкнути" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "Для більш детальної інформації по параметрах, перевірте" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "Google" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "Приклади застосування" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "Адреса для прослуховування" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "Порт для прослуховування" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "Завантаження" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "Проксі сервер" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9 (Рекомендовано)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9 (Захищено з підтримкою ECS)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9 (Захищено)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9 (Не захищено)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "Стан сервісу" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "Запустити" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "Зупинити" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "Зупинено" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "Невідомий постачальник" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "та" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "не встановлено, або не знайдено" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" diff --git a/luci-app-https-dns-proxy/po/vi/https-dns-proxy.po b/luci-app-https-dns-proxy/po/vi/https-dns-proxy.po deleted file mode 100644 index 918e17c85..000000000 --- a/luci-app-https-dns-proxy/po/vi/https-dns-proxy.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Language: vi\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" diff --git a/luci-app-https-dns-proxy/po/zh_Hans/https-dns-proxy.po b/luci-app-https-dns-proxy/po/zh_Hans/https-dns-proxy.po deleted file mode 100644 index ea8bc1f61..000000000 --- a/luci-app-https-dns-proxy/po/zh_Hans/https-dns-proxy.po +++ /dev/null @@ -1,207 +0,0 @@ -# -# Yangfl , 2019. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2020-02-19 13:30+0000\n" -"Last-Translator: xiazhang \n" -"Language-Team: Chinese (Simplified) \n" -"Language: zh_Hans\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.11\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "AdGuard(家庭保护)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "AdGuard(标准)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "CleanBrowsing(成人过滤器)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "CleanBrowsing(家庭过滤器)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "CleanBrowsing(安全筛选器)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "Cloudflare" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "DHCP/DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "通过 HTTPS 代理的 DNS" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "通过 HTTPS 代理的 DNS 设置" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "DNS.SB" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "Digitale Gesellschaft" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "禁用" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "DoH" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "EDNS 客户端子网" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "启用" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "有关不同选项的更多信息,请检查" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "谷歌" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "实例" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "监听地址" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "监听端口" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "加载中" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "ODVR (nic.cz)" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "代理服务器" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "Quad 9(推荐)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "Quad 9(获得ECS支持)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "Quad 9(安全)" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "Quad 9(不安全)" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "重新载入" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "解析器" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "运行中" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "服务状态" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "启动" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "停止" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "已停止" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "未知的提供商" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "当您添加/删除下面的任何实例时,它们将用于覆盖以下实例的“ DNS转发”部分" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "和" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "在" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "未安装或未找到" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "rubyfish.cn" - -#~ msgid "DNS over HTTPS Proxy" -#~ msgstr "DNS over HTTPS 代理" - -#~ msgid "DNS over HTTPS Proxy Settings" -#~ msgstr "DNS over HTTPS代理设置" - -#~ msgid "Provider" -#~ msgstr "提供商" - -#~ msgid "Subnet address" -#~ msgstr "子网地址" - -#~ msgid "Uknown Provider" -#~ msgstr "未知提供商" - -#~ msgid "HTTPS DNS Proxy" -#~ msgstr "HTTPS DNS 代理" - -#~ msgid "HTTPS DNS Proxy Settings" -#~ msgstr "HTTPS DNS 代理设置" - -#~ msgid "Group name" -#~ msgstr "组名称" - -#~ msgid "User name" -#~ msgstr "用户名" diff --git a/luci-app-https-dns-proxy/po/zh_Hant/https-dns-proxy.po b/luci-app-https-dns-proxy/po/zh_Hant/https-dns-proxy.po deleted file mode 100644 index dd7a75f8a..000000000 --- a/luci-app-https-dns-proxy/po/zh_Hant/https-dns-proxy.po +++ /dev/null @@ -1,198 +0,0 @@ -# -# Yangfl , 2019. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2020-02-25 23:11+0000\n" -"Last-Translator: Trevor \n" -"Language-Team: Chinese (Traditional) \n" -"Language: zh_Hant\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0-dev\n" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns-family.lua:3 -msgid "AdGuard (Family Protection)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.adguard.dns.lua:3 -msgid "AdGuard (Standard)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-adult.lua:3 -msgid "CleanBrowsing (Adult Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-family.lua:3 -msgid "CleanBrowsing (Family Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/org.cleanbrowsing.doh-security.lua:3 -msgid "CleanBrowsing (Security Filter)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/com.cloudflare-dns.lua:3 -msgid "Cloudflare" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:85 -msgid "DHCP and DNS" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/controller/https-dns-proxy.lua:4 -msgid "DNS Over HTTPS Proxy" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:64 -msgid "DNS Over HTTPS Proxy Settings" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/sb.dns.lua:3 -msgid "DNS.SB" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/ch.digitale-gesellschaft.dns.lua:3 -msgid "Digitale Gesellschaft" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:53 -msgid "Disable" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "DoH" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:143 -msgid "EDNS client subnet" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:51 -msgid "Enable" -msgstr "啟用" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:87 -msgid "For more information on different options check" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/google.dns.lua:3 -msgid "Google" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "Instances" -msgstr "例項" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:126 -msgid "Listen address" -msgstr "監聽位址" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:139 -msgid "Listen port" -msgstr "監聽埠" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/js.htm:52 -msgid "Loading" -msgstr "載入中" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/cz.nic.odvr.lua:3 -msgid "ODVR (nic.cz)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:146 -msgid "Proxy server" -msgstr "代理伺服器" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns.lua:3 -msgid "Quad 9 (Recommended)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns11.lua:3 -msgid "Quad 9 (Secured with ECS Support)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns9.lua:3 -msgid "Quad 9 (Secured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers/net.quad9.dns10.lua:3 -msgid "Quad 9 (Unsecured)" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:43 -msgid "Reload" -msgstr "重新載入" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:99 -msgid "Resolver" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "Running" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:66 -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:68 -msgid "Service Status" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:41 -msgid "Start" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/view/https-dns-proxy/buttons.htm:45 -msgid "Stop" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:37 -msgid "Stopped" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:22 -msgid "Unknown Provider" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:83 -msgid "" -"When you add/remove any instances below, they will be used to override the " -"'DNS forwardings' section of" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:91 -msgid "and" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:56 -msgid "at" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/model/cbi/https-dns-proxy.lua:32 -msgid "is not installed or not found" -msgstr "" - -#: applications/luci-app-https-dns-proxy/luasrc/https-dns-proxy/providers.disabled/cn.rubyfish.dns.lua:3 -msgid "rubyfish.cn" -msgstr "" - -#~ msgid "Provider" -#~ msgstr "提供商" - -#~ msgid "Subnet address" -#~ msgstr "子網位址" - -#~ msgid "HTTPS DNS Proxy" -#~ msgstr "HTTPS DNS 代理" - -#~ msgid "HTTPS DNS Proxy Settings" -#~ msgstr "HTTPS DNS 代理設定" - -#~ msgid "Group name" -#~ msgstr "組名稱" - -#~ msgid "User name" -#~ msgstr "使用者名稱" diff --git a/luci-app-https-dns-proxy/root/etc/uci-defaults/40_luci-https-dns-proxy b/luci-app-https-dns-proxy/root/etc/uci-defaults/40_luci-https-dns-proxy deleted file mode 100644 index a1ecfcea2..000000000 --- a/luci-app-https-dns-proxy/root/etc/uci-defaults/40_luci-https-dns-proxy +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -rm -rf /var/luci-modulecache/; rm -f /var/luci-indexcache; -exit 0 diff --git a/luci-app-https-dns-proxy/root/usr/share/luci/menu.d/luci-app-https-dns-proxy.json b/luci-app-https-dns-proxy/root/usr/share/luci/menu.d/luci-app-https-dns-proxy.json deleted file mode 100644 index 6b44c21df..000000000 --- a/luci-app-https-dns-proxy/root/usr/share/luci/menu.d/luci-app-https-dns-proxy.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "admin/services/https-dns-proxy": { - "title": "Proxy DNS Over HTTPS", - "order": 20, - "action": { - "type": "cbi", - "path": "https-dns-proxy" - }, - "depends": { - "acl": [ "luci-app-https-dns-proxy" ] - } - } -} diff --git a/luci-app-https-dns-proxy/root/usr/share/rpcd/acl.d/luci-app-https-dns-proxy.json b/luci-app-https-dns-proxy/root/usr/share/rpcd/acl.d/luci-app-https-dns-proxy.json deleted file mode 100644 index b2f1cbc0d..000000000 --- a/luci-app-https-dns-proxy/root/usr/share/rpcd/acl.d/luci-app-https-dns-proxy.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "luci-app-https-dns-proxy": { - "description": "Grant UCI access for luci-app-https-dns-proxy", - "read": { - "uci": [ "https-dns-proxy" ] - }, - "write": { - "uci": [ "https-dns-proxy" ] - } - } -} \ No newline at end of file diff --git a/luci-app-iperf/luasrc/controller/iperf.lua b/luci-app-iperf/luasrc/controller/iperf.lua index e6cb2ec3a..8af54323d 100644 --- a/luci-app-iperf/luasrc/controller/iperf.lua +++ b/luci-app-iperf/luasrc/controller/iperf.lua @@ -26,7 +26,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate) if mode == "udp" then options = options .. " -u -b " .. bitrate end - if mode ~= "upload" then + if updown ~= "upload" then options = options .. " -R" end local ipv = "4" @@ -40,7 +40,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate) end local port = t[ math.random( #t ) ] if password ~= "" then - iperf = io.popen("omr-iperf -P %s -%s -O %s -t %s -J -Z %s" % {parallel,ipv,omit,transmit,options}) + iperf = io.popen("omr-iperf %s -P %s -%s -O %s -t %s -J -Z %s" % {server,parallel,ipv,omit,transmit,options}) else iperf = io.popen("iperf3 -c %s -P %s -%s -p %s -O %s -t %s -J -Z %s" % {ut.shellquote(addr),parallel,ipv,port,omit,transmit,options}) end diff --git a/luci-app-iperf/po/de/iperf.po b/luci-app-iperf/po/de/iperf.po index cace2be1b..53023734e 100644 --- a/luci-app-iperf/po/de/iperf.po +++ b/luci-app-iperf/po/de/iperf.po @@ -28,6 +28,10 @@ msgstr "Ungültige Adresse!" msgid "Download" msgstr "Downstream" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:114 msgid "Internet protocol" msgstr "Internet-Protokoll" @@ -53,6 +57,10 @@ msgstr "Die ersten n Sekunden nicht berücksichtigen" msgid "Server" msgstr "Server" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "Einstellungen" @@ -61,7 +69,7 @@ msgstr "Einstellungen" msgid "Target bitrate (Mbits/s)" msgstr "Angestrebte Bandbreite (MBit/s)" -#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" msgstr "Test" @@ -88,6 +96,7 @@ msgid "Waiting for command to complete..." msgstr "Warte auf Abschluss der Aufgaben" #: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" msgstr "iPerf" @@ -95,6 +104,5 @@ msgstr "iPerf" msgid "iPerf speed tests" msgstr "iPerf Geschwindigkeitstests" -#: luci-app-iperf/luasrc/controller/iperf.lua:7 -msgid "iperf" -msgstr "iperf" +#~ msgid "iperf" +#~ msgstr "iperf" diff --git a/luci-app-iperf/po/de/iperf.po~ b/luci-app-iperf/po/de/iperf.po~ new file mode 100644 index 000000000..cace2be1b --- /dev/null +++ b/luci-app-iperf/po/de/iperf.po~ @@ -0,0 +1,100 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "" +"für 'unbegrenzt' den Wert '0' setzen. (Muss für UDP-Tests eingeschränkt " +"werden)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Ungültige Adresse!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Downstream" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Internet-Protokoll" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Wird geladen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Betriebsart" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Anzahl der parallel zu testenden Verbindungen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Die ersten n Sekunden nicht berücksichtigen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Server" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Einstellungen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Angestrebte Bandbreite (MBit/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Test" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "" +"Diesese Oberfläche für iPerf ist im Beta-Stadium und ohne offiziellen " +"Support." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Übertragungszeit in Sekunden" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Upstream" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "Warte auf Abschluss der Aufgaben" + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf Geschwindigkeitstests" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf" diff --git a/luci-app-iperf/po/fr/iperf.po b/luci-app-iperf/po/fr/iperf.po index ab1afefd3..711692095 100644 --- a/luci-app-iperf/po/fr/iperf.po +++ b/luci-app-iperf/po/fr/iperf.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-30 08:50+0000\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-iperf/luasrc/view/iperf/test.htm:128 msgid "0 for unlimited. Need to be limited for UDP test" @@ -29,6 +29,10 @@ msgstr "Adresse invalide !" msgid "Download" msgstr "Téléchargement" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "Accorder l'accès UCI pour luci-app-iperf" + #: luci-app-iperf/luasrc/view/iperf/test.htm:114 msgid "Internet protocol" msgstr "Protocole Internet" @@ -54,6 +58,12 @@ msgstr "Passe les n premières secondes" msgid "Server" msgstr "Serveur" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" +"L'IP du serveur VPS est contournée, donc cela testera uniquement la vitesse " +"de route par défaut." + #: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "Paramètres" @@ -62,9 +72,9 @@ msgstr "Paramètres" msgid "Target bitrate (Mbits/s)" msgstr "Vitesse souhaitée (Mbits/s)" -#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" -msgstr "Teste" +msgstr "Essai" #: luci-app-iperf/luasrc/view/iperf/test.htm:100 msgid "This iPerf interface is in bêta. No support for this." @@ -79,7 +89,7 @@ msgstr "Temps de transmission (s)" #: luci-app-iperf/luasrc/view/iperf/test.htm:43 #: luci-app-iperf/luasrc/view/iperf/test.htm:48 msgid "Upload" -msgstr "Envoie" +msgstr "Téléverser" #: luci-app-iperf/luasrc/view/iperf/test.htm:27 #: luci-app-iperf/luasrc/view/iperf/test.htm:67 @@ -87,6 +97,7 @@ msgid "Waiting for command to complete..." msgstr "En attente de la réponse de la commande..." #: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" msgstr "iPerf" @@ -94,6 +105,5 @@ msgstr "iPerf" msgid "iPerf speed tests" msgstr "Tests de vitesse iPerf" -#: luci-app-iperf/luasrc/controller/iperf.lua:7 -msgid "iperf" -msgstr "iperf" +#~ msgid "iperf" +#~ msgstr "iperf" diff --git a/luci-app-iperf/po/fr/iperf.po~ b/luci-app-iperf/po/fr/iperf.po~ new file mode 100644 index 000000000..ab1afefd3 --- /dev/null +++ b/luci-app-iperf/po/fr/iperf.po~ @@ -0,0 +1,99 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2020-09-30 08:50+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 pour sans limite. Nécessite d'être limité pour les tests UDP." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Adresse invalide !" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Téléchargement" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Protocole Internet" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Chargement" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Mode de fonctionnement" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Nombre de client en parallèle" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Passe les n premières secondes" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Serveur" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Vitesse souhaitée (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Teste" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Cette interface pour iPerf est en bêta. Pas de support pour ça." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Temps de transmission (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Envoie" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "En attente de la réponse de la commande..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Tests de vitesse iPerf" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf" diff --git a/luci-app-iperf/po/it/iperf.po b/luci-app-iperf/po/it/iperf.po index 55cef15bd..b8668f2bd 100644 --- a/luci-app-iperf/po/it/iperf.po +++ b/luci-app-iperf/po/it/iperf.po @@ -26,6 +26,10 @@ msgstr "È stato specificato un indirizzo errato!" msgid "Download" msgstr "Scarica" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:114 msgid "Internet protocol" msgstr "Internet Protocol (Protocollo Internet)" @@ -51,6 +55,10 @@ msgstr "Ometti i primi n secondi" msgid "Server" msgstr "Server" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "Impostazioni" @@ -59,7 +67,7 @@ msgstr "Impostazioni" msgid "Target bitrate (Mbits/s)" msgstr "Bitrate desiderato (Mbits/s)" -#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" msgstr "Test" @@ -84,6 +92,7 @@ msgid "Waiting for command to complete..." msgstr "In attesa del completamento del comando ..." #: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" msgstr "iPerf" @@ -91,6 +100,5 @@ msgstr "iPerf" msgid "iPerf speed tests" msgstr "Prove di velocità iPerf" -#: luci-app-iperf/luasrc/controller/iperf.lua:7 -msgid "iperf" -msgstr "iPerf" +#~ msgid "iperf" +#~ msgstr "iPerf" diff --git a/luci-app-iperf/po/it/iperf.po~ b/luci-app-iperf/po/it/iperf.po~ new file mode 100644 index 000000000..55cef15bd --- /dev/null +++ b/luci-app-iperf/po/it/iperf.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 per illimitato. Deve essere limitato per il test UDP" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "È stato specificato un indirizzo errato!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Scarica" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Internet Protocol (Protocollo Internet)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Caricamento in corso" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Modalità di funzionamento" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Numero di flussi client paralleli da eseguire" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Ometti i primi n secondi" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Server" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Impostazioni" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Bitrate desiderato (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Test" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Questa interfaccia iPerf è in bêta." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "È ora di trasmettere per (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Carica" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "In attesa del completamento del comando ..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Prove di velocità iPerf" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iPerf" diff --git a/luci-app-iperf/po/oc/iperf.po b/luci-app-iperf/po/oc/iperf.po index 598bb1a2f..f5bc39dad 100644 --- a/luci-app-iperf/po/oc/iperf.po +++ b/luci-app-iperf/po/oc/iperf.po @@ -26,6 +26,10 @@ msgstr "Adreça invalida !" msgid "Download" msgstr "Telecargament" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:114 msgid "Internet protocol" msgstr "Protocòl Internet" @@ -51,6 +55,10 @@ msgstr "Sautar las primièras n segondas" msgid "Server" msgstr "Servidor" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "Paramètres" @@ -59,7 +67,7 @@ msgstr "Paramètres" msgid "Target bitrate (Mbits/s)" msgstr "Velocitat desirada (Mbits/s)" -#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" msgstr "Pròva" @@ -84,6 +92,7 @@ msgid "Waiting for command to complete..." msgstr "En espèra d’una responsa de la comanda..." #: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" msgstr "iPerf" @@ -91,6 +100,5 @@ msgstr "iPerf" msgid "iPerf speed tests" msgstr "Pròva de velocitat iPerf" -#: luci-app-iperf/luasrc/controller/iperf.lua:7 -msgid "iperf" -msgstr "iperf" +#~ msgid "iperf" +#~ msgstr "iperf" diff --git a/luci-app-iperf/po/oc/iperf.po~ b/luci-app-iperf/po/oc/iperf.po~ new file mode 100644 index 000000000..598bb1a2f --- /dev/null +++ b/luci-app-iperf/po/oc/iperf.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 per cap de limit. Requerís un limit pels ensages UDP" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Adreça invalida !" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Telecargament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Protocòl Internet" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Cargament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Mòde de foncionament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Nombre de clients en parallèl" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Sautar las primièras n segondas" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Servidor" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Velocitat desirada (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Pròva" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Aquesta interfàcia per iPerf es en beta. Cap de support per aquò." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Temps de transmission (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Mandadís" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "En espèra d’una responsa de la comanda..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Pròva de velocitat iPerf" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf" diff --git a/luci-app-iperf/po/ru/iperf.po b/luci-app-iperf/po/ru/iperf.po new file mode 100644 index 000000000..402dfb655 --- /dev/null +++ b/luci-app-iperf/po/ru/iperf.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 - без ограничений. Для теста UDP число должно быть больше 0" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Указан не правильный адрес!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Получение" + +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "Разрешить доступ к UCI для luci-app-iperf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Интернет протокол" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Загрузка" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Режим работы" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Количество параллельных потоковых клиентов" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Пропустить первые n секунд" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Сервер" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" +"Включен режим байпаса для IP VPS, будет проверена скорость только маршрута " +"по умолчанию." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Настройки" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Целевой битрейт (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 +msgid "Test" +msgstr "Тест" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Этот iPerf interface в режиме beta. Недоступно." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Время передачи (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Отправка" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "Ожидание завершения команды..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf тест скорости" diff --git a/luci-app-iperf/po/templates/iperf.pot b/luci-app-iperf/po/templates/iperf.pot index 6635e7b7d..8f41376b1 100644 --- a/luci-app-iperf/po/templates/iperf.pot +++ b/luci-app-iperf/po/templates/iperf.pot @@ -17,6 +17,10 @@ msgstr "" msgid "Download" msgstr "" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:114 msgid "Internet protocol" msgstr "" @@ -42,6 +46,10 @@ msgstr "" msgid "Server" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + #: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "" @@ -50,7 +58,7 @@ msgstr "" msgid "Target bitrate (Mbits/s)" msgstr "" -#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" msgstr "" @@ -75,13 +83,10 @@ msgid "Waiting for command to complete..." msgstr "" #: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" msgstr "" #: luci-app-iperf/luasrc/view/iperf/test.htm:99 msgid "iPerf speed tests" msgstr "" - -#: luci-app-iperf/luasrc/controller/iperf.lua:7 -msgid "iperf" -msgstr "" diff --git a/luci-app-iperf/po/zh_Hans/iperf.po b/luci-app-iperf/po/zh_Hans/iperf.po index ca33cb025..6ccea7a50 100644 --- a/luci-app-iperf/po/zh_Hans/iperf.po +++ b/luci-app-iperf/po/zh_Hans/iperf.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:02+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-iperf/luasrc/view/iperf/test.htm:128 msgid "0 for unlimited. Need to be limited for UDP test" @@ -17,7 +17,7 @@ msgstr "0代表无限.需要限制UDP测试" #: luci-app-iperf/luasrc/view/iperf/test.htm:48 #: luci-app-iperf/luasrc/view/iperf/test.htm:88 msgid "Bad address specified!" -msgstr "指定的地址错误啊哥们!" +msgstr "指定地址错误!" #: luci-app-iperf/luasrc/view/iperf/test.htm:66 #: luci-app-iperf/luasrc/view/iperf/test.htm:78 @@ -26,6 +26,10 @@ msgstr "指定的地址错误啊哥们!" msgid "Download" msgstr "下载" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "授予luci-app-iperf UCI访问权限" + #: luci-app-iperf/luasrc/view/iperf/test.htm:114 msgid "Internet protocol" msgstr "互联网协议" @@ -51,6 +55,10 @@ msgstr "忽略前n秒" msgid "Server" msgstr "服务器" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "VPS IP被绕过,因此这将只测试默认的路由速度。" + #: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "设置" @@ -59,7 +67,7 @@ msgstr "设置" msgid "Target bitrate (Mbits/s)" msgstr "目标比特率(Mbits/s)" -#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" msgstr "测试" @@ -84,6 +92,7 @@ msgid "Waiting for command to complete..." msgstr "等待命令完成..." #: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" msgstr "iPerf测速" @@ -91,6 +100,5 @@ msgstr "iPerf测速" msgid "iPerf speed tests" msgstr "iPerf速度测试" -#: luci-app-iperf/luasrc/controller/iperf.lua:7 -msgid "iperf" -msgstr "iperf测速" +#~ msgid "iperf" +#~ msgstr "iperf测速" diff --git a/luci-app-iperf/po/zh_Hans/iperf.po~ b/luci-app-iperf/po/zh_Hans/iperf.po~ new file mode 100644 index 000000000..63ea2e8b8 --- /dev/null +++ b/luci-app-iperf/po/zh_Hans/iperf.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:03+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0代表无限.需要限制UDP测试" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "指定地址错误!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "下载" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "互联网协议" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "载入中" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "操作模式" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "要运行的并行客户端流的数量" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "忽略前n秒" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "服务器" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "设置" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "目标比特率(Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "测试" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "此iPerf界面位于测试中.对此不支持." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "传输时间 (秒)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "上传" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "等待命令完成..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf测速" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf速度测试" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf测速" diff --git a/luci-app-iperf/root/etc/config/iperf b/luci-app-iperf/root/etc/config/iperf index 911c3a1e6..be4baabb4 100644 --- a/luci-app-iperf/root/etc/config/iperf +++ b/luci-app-iperf/root/etc/config/iperf @@ -94,3 +94,22 @@ config server 'he' option tcp '1' option udp '1' option location 'America' + +config server 'biznetnetworks' + option host 'iperf.biznetnetworks.com' + option ipv4 '1' + option ipv6 '1' + option ports '5201,5202,5203' + option tcp '1' + option udp '1' + option location 'Asia' + +config server 'milkywan' + option host 'speedtest.milkywan.fr' + option ipv4 '1' + option ipv6 '1' + option speed '10000' + option ports '9200,9201,9202,9203,9204,9205,9206,9207,9208,9209,9210,9211,9212,9213,9214,9215' + option tcp '1' + option udp '1' + option location 'Europe' diff --git a/luci-app-mail/po/de/mail.po b/luci-app-mail/po/de/mail.po index f04c4e7c4..2b7c7984e 100644 --- a/luci-app-mail/po/de/mail.po +++ b/luci-app-mail/po/de/mail.po @@ -10,35 +10,55 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.4\n" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "Von" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "E-Mail-Einstellungen" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "Schlüssel" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "Port" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" msgstr "SMTP" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" msgstr "StartTLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "Server" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "Einstellungen für Dienste, die E-Mail versenden können sollen." +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" msgstr "TLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "An" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "Benutzername" diff --git a/luci-app-mail/po/de/mail.po~ b/luci-app-mail/po/de/mail.po~ new file mode 100644 index 000000000..f04c4e7c4 --- /dev/null +++ b/luci-app-mail/po/de/mail.po~ @@ -0,0 +1,44 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "Von" + +msgid "Mail settings" +msgstr "E-Mail-Einstellungen" + +msgid "Password" +msgstr "Schlüssel" + +msgid "Port" +msgstr "Port" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "StartTLS" + +msgid "Server" +msgstr "Server" + +msgid "Set mail settings for services that need to send mails." +msgstr "Einstellungen für Dienste, die E-Mail versenden können sollen." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "An" + +msgid "Username" +msgstr "Benutzername" diff --git a/luci-app-mail/po/fr/mail.po b/luci-app-mail/po/fr/mail.po index ed30dd37f..78f77d558 100644 --- a/luci-app-mail/po/fr/mail.po +++ b/luci-app-mail/po/fr/mail.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-08-03 12:39+0000\n" +"PO-Revision-Date: 2021-05-31 18:51+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -11,39 +11,59 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "E-Mail" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "De" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "Accorder l'accès UCI pour luci-app-mail" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "Paramètres e-mail" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "Mot de passe" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "Port" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" msgstr "SMTP" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" msgstr "STARTTLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "Serveur" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "" "Définissez les paramètres de messagerie pour les services qui doivent " "envoyer des e-mails." +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" msgstr "TLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "À" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "Nom d'utilisateur" diff --git a/luci-app-mail/po/fr/mail.po~ b/luci-app-mail/po/fr/mail.po~ new file mode 100644 index 000000000..ed30dd37f --- /dev/null +++ b/luci-app-mail/po/fr/mail.po~ @@ -0,0 +1,49 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2020-08-03 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "De" + +msgid "Mail settings" +msgstr "Paramètres e-mail" + +msgid "Password" +msgstr "Mot de passe" + +msgid "Port" +msgstr "Port" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "STARTTLS" + +msgid "Server" +msgstr "Serveur" + +msgid "Set mail settings for services that need to send mails." +msgstr "" +"Définissez les paramètres de messagerie pour les services qui doivent " +"envoyer des e-mails." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "À" + +msgid "Username" +msgstr "Nom d'utilisateur" diff --git a/luci-app-mail/po/it/mail.po b/luci-app-mail/po/it/mail.po index fd43053e7..684d94dc4 100644 --- a/luci-app-mail/po/it/mail.po +++ b/luci-app-mail/po/it/mail.po @@ -10,35 +10,55 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.4\n" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "Da" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "Configurazione mail" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "Password" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "Porta" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" msgstr "SMTP" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" msgstr "STARTTLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "Server" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "Configurazione del server mail da utilizzare per inviare alert." +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" msgstr "TLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "A" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "Username" diff --git a/luci-app-mail/po/it/mail.po~ b/luci-app-mail/po/it/mail.po~ new file mode 100644 index 000000000..fd43053e7 --- /dev/null +++ b/luci-app-mail/po/it/mail.po~ @@ -0,0 +1,44 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-01 10:49+0000\n" +"Last-Translator: Giuseppe Dipierro \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "Da" + +msgid "Mail settings" +msgstr "Configurazione mail" + +msgid "Password" +msgstr "Password" + +msgid "Port" +msgstr "Porta" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "STARTTLS" + +msgid "Server" +msgstr "Server" + +msgid "Set mail settings for services that need to send mails." +msgstr "Configurazione del server mail da utilizzare per inviare alert." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "A" + +msgid "Username" +msgstr "Username" diff --git a/luci-app-mail/po/oc/mail.po b/luci-app-mail/po/oc/mail.po index c34bc1d74..a822d14de 100644 --- a/luci-app-mail/po/oc/mail.po +++ b/luci-app-mail/po/oc/mail.po @@ -10,37 +10,57 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.0.4\n" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "De" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "Paramètres e-mail" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "Senhal" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "Pòrt" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" msgstr "SMTP" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" msgstr "STARTTLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "Servidor" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "" -"Definissètz los paramètres de messatjariá pels servicis que devon enviar " -"d’e-mails." +"Definissètz los paramètres de messatjariá pels servicis que devon enviar d’e-" +"mails." +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" msgstr "TLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "A" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "Nom d'utilizaire" diff --git a/luci-app-mail/po/oc/mail.po~ b/luci-app-mail/po/oc/mail.po~ new file mode 100644 index 000000000..ce93d0ed8 --- /dev/null +++ b/luci-app-mail/po/oc/mail.po~ @@ -0,0 +1,46 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "De" + +msgid "Mail settings" +msgstr "Paramètres e-mail" + +msgid "Password" +msgstr "Senhal" + +msgid "Port" +msgstr "Pòrt" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "STARTTLS" + +msgid "Server" +msgstr "Servidor" + +msgid "Set mail settings for services that need to send mails." +msgstr "" +"Definissètz los paramètres de messatjariá pels servicis que devon enviar d’e-" +"mails." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "A" + +msgid "Username" +msgstr "Nom d'utilizaire" diff --git a/luci-app-mail/po/ru/mail.po b/luci-app-mail/po/ru/mail.po new file mode 100644 index 000000000..55fcead70 --- /dev/null +++ b/luci-app-mail/po/ru/mail.po @@ -0,0 +1,65 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: Aleksandr Serdyukov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "E-Mail" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 +msgid "From" +msgstr "От" + +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "Полный UCI доступ для luci-app-mail" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Mail settings" +msgstr "Настройки почты" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 +msgid "Password" +msgstr "Пароль" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 +msgid "Port" +msgstr "Порт" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 +msgid "SMTP" +msgstr "SMTP" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 +msgid "STARTTLS" +msgstr "STARTTLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 +msgid "Server" +msgstr "Сервер" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Set mail settings for services that need to send mails." +msgstr "Выбор настроек почты для сервисов, которым нужно отправлять почту." + +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 +msgid "TLS" +msgstr "TLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 +msgid "To" +msgstr "Кому" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 +msgid "Username" +msgstr "Имя пользователя" diff --git a/luci-app-mail/po/templates/mail.pot b/luci-app-mail/po/templates/mail.pot index a2eeddf5c..9abad09a1 100644 --- a/luci-app-mail/po/templates/mail.pot +++ b/luci-app-mail/po/templates/mail.pot @@ -1,35 +1,55 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "" diff --git a/luci-app-mail/po/zh_Hans/mail.po b/luci-app-mail/po/zh_Hans/mail.po index 1c3a57e2f..f857e08b7 100644 --- a/luci-app-mail/po/zh_Hans/mail.po +++ b/luci-app-mail/po/zh_Hans/mail.po @@ -1,44 +1,64 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:02+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "电子邮件" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "来自" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "授予luci-app-iperf UCI访问权限" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "邮件设置" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "密码" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "端口" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" msgstr "SMTP设置" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" msgstr "STARTTLS设置" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "服务器" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "为需要发送邮件的服务设置邮件设置." +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" msgstr "证书" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "发送到" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "账号" diff --git a/luci-app-mail/po/zh_Hans/mail.po~ b/luci-app-mail/po/zh_Hans/mail.po~ new file mode 100644 index 000000000..1c3a57e2f --- /dev/null +++ b/luci-app-mail/po/zh_Hans/mail.po~ @@ -0,0 +1,44 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-04 16:02+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "来自" + +msgid "Mail settings" +msgstr "邮件设置" + +msgid "Password" +msgstr "密码" + +msgid "Port" +msgstr "端口" + +msgid "SMTP" +msgstr "SMTP设置" + +msgid "STARTTLS" +msgstr "STARTTLS设置" + +msgid "Server" +msgstr "服务器" + +msgid "Set mail settings for services that need to send mails." +msgstr "为需要发送邮件的服务设置邮件设置." + +msgid "TLS" +msgstr "证书" + +msgid "To" +msgstr "发送到" + +msgid "Username" +msgstr "账号" diff --git a/luci-app-mail/po/zh_Hant_HK/mail.po b/luci-app-mail/po/zh_Hant_HK/mail.po deleted file mode 100644 index be68bf858..000000000 --- a/luci-app-mail/po/zh_Hant_HK/mail.po +++ /dev/null @@ -1,38 +0,0 @@ -msgid "" -msgstr "" -"Language: zh_Hant_HK\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "From" -msgstr "" - -msgid "Mail settings" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "SMTP" -msgstr "" - -msgid "STARTTLS" -msgstr "" - -msgid "Server" -msgstr "" - -msgid "Set mail settings for services that need to send mails." -msgstr "" - -msgid "TLS" -msgstr "" - -msgid "To" -msgstr "" - -msgid "Username" -msgstr "" diff --git a/luci-app-mlvpn/Makefile b/luci-app-mlvpn/Makefile index 80d97c856..77a8ceb24 100644 --- a/luci-app-mlvpn/Makefile +++ b/luci-app-mlvpn/Makefile @@ -5,8 +5,8 @@ include $(TOPDIR)/rules.mk -LUCI_TITLE:=LuCI Interface to Glorytun TCP -LUCI_DEPENDS:=+glorytun +LUCI_TITLE:=LuCI Interface to MLVPN +LUCI_DEPENDS:=+mlvpn PKG_LICENSE:=GPLv3 diff --git a/luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js b/luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js index 2d5258047..f8bbc58c5 100644 --- a/luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js +++ b/luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js @@ -46,8 +46,8 @@ return L.view.extend({ o.rmempty = false; o = s.taboption('general', form.Value, 'firstport', _('First Port')); - o.default = "65201" - o.datatype = "port" + o.default = "65201"; + o.datatype = "port"; o.rmempty = false; o = s.taboption('general', form.Value, 'password', _('Password')); @@ -55,26 +55,36 @@ return L.view.extend({ o.modalonly = true; o = s.taboption('general', form.Value, 'interface_name', _('Interface name')); - o.default = "mlvpn0" - o.placeholder = "mlvpn0" + o.default = "mlvpn0"; + o.placeholder = "mlvpn0"; o.rmempty = false; o.modalonly = true; o = s.taboption('advanced', form.Value, 'timeout', _('Timeout (s)')); o.default = '30'; - o.datatype = "uinteger" + o.datatype = "uinteger"; o.rmempty = false; o.modalonly = true; o = s.taboption('advanced', form.Value, 'reorder_buffer_size', _('Reorder buffer size')); o.default = '128'; - o.datatype = "uinteger" + o.datatype = "uinteger"; o.rmempty = false; o.modalonly = true; + o = s.taboption('advanced', form.Flag, 'cleartext_data', _('Disable encryption')); + o.default = o.disabled; + o.rmempty = false; + o = s.taboption('advanced', form.Value, 'loss_tolerance', _('Loss tolerance')); o.default = '50'; - o.datatype = "uinteger" + o.datatype = "uinteger"; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'latency_tolerance', _('Latency tolerance')); + o.default = '300'; + o.datatype = "uinteger"; o.rmempty = false; o.modalonly = true; diff --git a/luci-app-mlvpn/po/fr/mlvpn.po b/luci-app-mlvpn/po/fr/mlvpn.po index b1a9a5d4a..97c7d305e 100644 --- a/luci-app-mlvpn/po/fr/mlvpn.po +++ b/luci-app-mlvpn/po/fr/mlvpn.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-15 14:46+0000\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -8,21 +8,25 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 msgid "Advanced Settings" msgstr "Configuration avancée" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:38 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 msgid "Client" msgstr "Client" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" +msgstr "Désactiver le chiffrement" + #: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 msgid "Enabled" msgstr "Activer" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 msgid "First Port" msgstr "Premier port" @@ -34,7 +38,7 @@ msgstr "Paramètres généraux" msgid "Grant UCI access for luci-app-mlvpn" msgstr "Accorder l'accès UCI pour luci-app-mlvpn" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 msgid "Host" msgstr "Hôte" @@ -42,15 +46,15 @@ msgstr "Hôte" msgid "Instances" msgstr "Instances" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:54 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 msgid "Interface name" msgstr "Nom de l'interface" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:78 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 msgid "Label" msgstr "Étiquette" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:72 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 msgid "Loss tolerance" msgstr "Tolérance aux pertes" @@ -59,22 +63,22 @@ msgstr "Tolérance aux pertes" msgid "MLVPN" msgstr "MLVPN" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 msgid "Mode" msgstr "Mode" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:50 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 msgid "Password" msgstr "Mot de passe" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:66 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 msgid "Reorder buffer size" msgstr "Taille du tampon de réordonnancement" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:39 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 msgid "Server" msgstr "Serveur" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:60 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 msgid "Timeout (s)" msgstr "Délais d'attente (s)" diff --git a/luci-app-mlvpn/po/fr/mlvpn.po~ b/luci-app-mlvpn/po/fr/mlvpn.po~ new file mode 100644 index 000000000..b8f466284 --- /dev/null +++ b/luci-app-mlvpn/po/fr/mlvpn.po~ @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:38 +msgid "Client" +msgstr "Client" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "First Port" +msgstr "Premier port" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "Accorder l'accès UCI pour luci-app-mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Host" +msgstr "Hôte" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:54 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:78 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:72 +msgid "Loss tolerance" +msgstr "Tolérance aux pertes" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 +msgid "MLVPN" +msgstr "MLVPN" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Mode" +msgstr "Mode" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:50 +msgid "Password" +msgstr "Mot de passe" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:66 +msgid "Reorder buffer size" +msgstr "Taille du tampon de réordonnancement" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:39 +msgid "Server" +msgstr "Serveur" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:60 +msgid "Timeout (s)" +msgstr "Délais d'attente (s)" diff --git a/luci-app-mlvpn/po/ru/mlvpn.po b/luci-app-mlvpn/po/ru/mlvpn.po new file mode 100644 index 000000000..de9e4cd8c --- /dev/null +++ b/luci-app-mlvpn/po/ru/mlvpn.po @@ -0,0 +1,85 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: Aleksandr Serdyukov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 +msgid "Client" +msgstr "Клиент" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" +msgstr "Отключить шифрование" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 +msgid "First Port" +msgstr "Первый порт" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "Основные настройки" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "Полный UCI доступ для luci-app-mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "Host" +msgstr "Хост" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Label" +msgstr "Метка" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 +msgid "Loss tolerance" +msgstr "Терпимость к потерям" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 +msgid "MLVPN" +msgstr "MLVPN" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 +msgid "Mode" +msgstr "Режим" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 +msgid "Password" +msgstr "Пароль" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 +msgid "Reorder buffer size" +msgstr "Изменить размер буфера" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Server" +msgstr "Сервер" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 +msgid "Timeout (s)" +msgstr "Тайм- аут (s)" diff --git a/luci-app-mlvpn/po/templates/mlvpn.pot b/luci-app-mlvpn/po/templates/mlvpn.pot index 45e559267..2f1fe9c73 100644 --- a/luci-app-mlvpn/po/templates/mlvpn.pot +++ b/luci-app-mlvpn/po/templates/mlvpn.pot @@ -5,15 +5,19 @@ msgstr "Content-Type: text/plain; charset=UTF-8" msgid "Advanced Settings" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:38 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 msgid "Client" msgstr "" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" +msgstr "" + #: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 msgid "Enabled" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 msgid "First Port" msgstr "" @@ -25,7 +29,7 @@ msgstr "" msgid "Grant UCI access for luci-app-mlvpn" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 msgid "Host" msgstr "" @@ -33,15 +37,15 @@ msgstr "" msgid "Instances" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:54 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 msgid "Interface name" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:78 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 msgid "Label" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:72 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 msgid "Loss tolerance" msgstr "" @@ -50,22 +54,22 @@ msgstr "" msgid "MLVPN" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 msgid "Mode" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:50 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 msgid "Password" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:66 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 msgid "Reorder buffer size" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:39 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 msgid "Server" msgstr "" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:60 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 msgid "Timeout (s)" msgstr "" diff --git a/luci-app-mlvpn/po/zh_Hans/mlvpn.po b/luci-app-mlvpn/po/zh_Hans/mlvpn.po index 868ff2e57..806a7ec76 100644 --- a/luci-app-mlvpn/po/zh_Hans/mlvpn.po +++ b/luci-app-mlvpn/po/zh_Hans/mlvpn.po @@ -1,28 +1,32 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:03+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 msgid "Advanced Settings" msgstr "高级设置" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:38 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 msgid "Client" msgstr "客户端" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" +msgstr "禁用加密" + #: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 msgid "Enabled" -msgstr "开启" +msgstr "启用" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 msgid "First Port" msgstr "第一端口" @@ -34,7 +38,7 @@ msgstr "通用设置" msgid "Grant UCI access for luci-app-mlvpn" msgstr "授予UCI访问luci-app-mlvpn的权限" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 msgid "Host" msgstr "主机" @@ -42,15 +46,15 @@ msgstr "主机" msgid "Instances" msgstr "实例" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:54 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 msgid "Interface name" msgstr "接口名称" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:78 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 msgid "Label" msgstr "标签" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:72 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 msgid "Loss tolerance" msgstr "损失容忍" @@ -59,22 +63,22 @@ msgstr "损失容忍" msgid "MLVPN" msgstr "mlvpn" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 msgid "Mode" msgstr "模式" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:50 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 msgid "Password" msgstr "密码" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:66 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 msgid "Reorder buffer size" msgstr "重新排序缓冲区大小" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:39 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 msgid "Server" msgstr "服务器" -#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:60 +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 msgid "Timeout (s)" -msgstr "超时(s)" +msgstr "超时(秒)" diff --git a/luci-app-mlvpn/po/zh_Hans/mlvpn.po~ b/luci-app-mlvpn/po/zh_Hans/mlvpn.po~ new file mode 100644 index 000000000..868ff2e57 --- /dev/null +++ b/luci-app-mlvpn/po/zh_Hans/mlvpn.po~ @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-04 16:03+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:38 +msgid "Client" +msgstr "客户端" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "开启" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "First Port" +msgstr "第一端口" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "授予UCI访问luci-app-mlvpn的权限" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Host" +msgstr "主机" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:54 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:78 +msgid "Label" +msgstr "标签" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:72 +msgid "Loss tolerance" +msgstr "损失容忍" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 +msgid "MLVPN" +msgstr "mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Mode" +msgstr "模式" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:50 +msgid "Password" +msgstr "密码" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:66 +msgid "Reorder buffer size" +msgstr "重新排序缓冲区大小" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:39 +msgid "Server" +msgstr "服务器" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:60 +msgid "Timeout (s)" +msgstr "超时(s)" diff --git a/luci-app-mptcp/htdocs/luci-static/resources/view/mptcp/mptcp.js b/luci-app-mptcp/htdocs/luci-static/resources/view/mptcp/mptcp.js new file mode 100644 index 000000000..80a7a5fcc --- /dev/null +++ b/luci-app-mptcp/htdocs/luci-static/resources/view/mptcp/mptcp.js @@ -0,0 +1,241 @@ +'use strict'; +'require rpc'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +/* + * Copyright (C) 2024 Ycarus (Yannick Chabanois) for OpenMPTCProuter + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information + */ + +var callSystemBoard = rpc.declare({ + object: 'system', + method: 'board' +}); + + +return L.view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(callSystemBoard(), {}) + ]); + }, + + render: function(res) { + var m, s, o; + var boardinfo = res[0]; + + m = new form.Map('network', _('MPTCP'),_('Networks MPTCP settings.')); + + s = m.section(form.TypedSection, 'globals'); + + o = s.option(form.ListValue, 'multipath', _('Multipath TCP')); + o.value("enable", _("enable")); + o.value("disable", _("disable")); + o.readonly = true; + + o = s.option(form.ListValue, "mptcp_checksum", _("Multipath TCP checksum")); + o.value(1, _("enable")); + o.value(0, _("disable")); + + if (boardinfo.kernel.substring(1,4) != "5.15" && boardinfo.kernel.substring(1,1) != "6") { + o = s.option(form.ListValue, "mptcp_debug", _("Multipath Debug")); + o.value(1, _("enable")); + o.value(0, _("disable")); + } + + o = s.option(form.ListValue, "mptcp_path_manager", _("Multipath TCP path-manager"), _("Default is fullmesh")); + o.value("default", _("default")); + o.value("fullmesh", "fullmesh"); + + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o.value("ndiffports", "ndiffports"); + o.value("binder", "binder"); + o.value("netlink", _("Netlink")); + } + + o = s.option(form.ListValue, "mptcp_scheduler", _("Multipath TCP scheduler"), _('BPF schedulers (not available on all platforms):') + '
' + + _('bpf_burst => same as the default scheduler') + '
' + + _('bpf_red => sends all packets redundantly on all available subflows') + '
' + + _('bpf_first => always picks the first subflow to send data') + '
' + + _('bpf_rr => always picks the next available subflow to send data (round-robin)') + + ); + o.value("default", _("default")); + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o.value("roundrobin", "round-robin"); + o.value("redundant", "redundant"); + o.value("blest", "BLEST"); + o.value("ecf", "ECF"); + } + + if (parseFloat(boardinfo.kernel.substring(0,3)) > 6) { + o.load = function(section_id) { + return L.resolveDefault(fs.list('/usr/share/bpf/scheduler'), []).then(L.bind(function(entries) { + for (var i = 0; i < entries.length; i++) + if (entries[i].type == 'file' && entries[i].name.match(/\.o$/)) + this.value(entries[i].name); + return this.super('load', [section_id]); + }, this)); + }; + // bpf_burst => same as the default scheduler + // bpf_red => sends all packets redundantly on all available subflows + // bpf_first => always picks the first subflow to send data + // bpf_rr => always picks the next available subflow to send data (round-robin) + } + + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o = s.option(form.Value, "mptcp_syn_retries", _("Multipath TCP SYN retries")); + o.datatype = "uinteger"; + o.rmempty = false; + } + + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o = s.option(form.ListValue, "mptcp_version", _("Multipath TCP version")); + o.value(0, _("0")); + o.value(1, _("1")); + o.default = 0; + } + + o = s.option(form.ListValue, "congestion", _("Congestion Control"),_("Default is cubic")); + o.load = function(section_id) { + return fs.exec_direct('/sbin/sysctl', ['-n', 'net.ipv4.tcp_available_congestion_control']).then(L.bind(function(entries) { + var congestioncontrol = entries.toString().split(' '); + for (var d in congestioncontrol) { + this.value(congestioncontrol[d]); + }; + return this.super('load', [section_id]); + }, this)); + }; + + if (parseFloat(boardinfo.kernel.substring(0,4)) >= 6) { + if (boardinfo.kernel.substring(0,1) == "6") { + // Only available since 5.19 + o = s.option(form.ListValue, "mptcp_pm_type", _("Path Manager type")); + o.value(0, _("In-kernel path manager")); + o.value(1, _("Userspace path manager")); + o.default = 0; + } + + o = s.option(form.ListValue, "mptcp_disable_initial_config", _("Initial MPTCP configuration")); + o.depends("mptcp_pm_type","1"); + o.value("0", _("enable")); + o.value("1", _("disable")); + o.default = "0"; + + o = s.option(form.ListValue, "mptcp_force_multipath", _("Force Multipath configuration")); + o.depends("mptcp_pm_type","1"); + o.value("1", _("enable")); + o.value("0", _("disable")); + o.default = "1"; + + o = s.option(form.ListValue, "mptcpd_enable", _("Enable MPTCPd")); + o.depends("mptcp_pm_type","1"); + o.value("enable", _("enable")); + o.value("disable", _("disable")); + o.default = "disable"; + + o = s.option(form.DynamicList, "mptcpd_path_manager", _("MPTCPd path managers")); + o.load = function(section_id) { + return L.resolveDefault(fs.list('/usr/lib/mptcpd'), []).then(L.bind(function(entries) { + for (var i = 0; i < entries.length; i++) + if (entries[i].type == 'file' && entries[i].name.match(/\.so$/)) + this.value(entries[i].name); + return this.super('load', [section_id]); + }, this)); + }; + o.depends("mptcp_pm_type","1"); + + o = s.option(form.DynamicList, "mptcpd_plugins", _("MPTCPd plugins")); + o.load = function(section_id) { + return L.resolveDefault(fs.list('/usr/lib/mptcpd'), []).then(L.bind(function(entries) { + for (var i = 0; i < entries.length; i++) + if (entries[i].type == 'file' && entries[i].name.match(/\.so$/)) + this.value(entries[i].name); + return this.super('load', [section_id]); + }, this)); + }; + o.depends("mptcp_pm_type","1"); + + o = s.option(form.DynamicList, "mptcpd_addr_flags", _("MPTCPd Address annoucement flags")); + o.value("subflow","subflow"); + o.value("signal","signal"); + o.value("backup","backup"); + o.value("fullmesh","fullmesh"); + o.depends("mptcp_pm_type","1"); + + o = s.option(form.DynamicList, "mptcpd_notify_flags", _("MPTCPd Address notification flags")); + o.value("existing","existing"); + o.value("skip_link_local","skip_link_local"); + o.value("skip_loopback","skip_loopback"); + o.depends("mptcp_pm_type","1"); + + o = s.option(form.Value, "mptcp_subflows", _("Max subflows"),_("specifies the maximum number of additional subflows allowed for each MPTCP connection")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 3; + + o = s.option(form.Value, "mptcp_stale_loss_cnt", _("Retranmission intervals"),_("The number of MPTCP-level retransmission intervals with no traffic and pending outstanding data on a given subflow required to declare it stale. A low stale_loss_cnt value allows for fast active-backup switch-over, an high value maximize links utilization on edge scenarios e.g. lossy link with high BER or peer pausing the data processing.")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 4; + + o = s.option(form.Value, "mptcp_add_addr_accepted", _("Max add address"),_("specifies the maximum number of ADD_ADDR (add address) suboptions accepted for each MPTCP connection")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + + o = s.option(form.Value, "mptcp_add_addr_timeout", _("Control message timeout"),_("Set the timeout after which an ADD_ADDR (add address) control message will be resent to an MPTCP peer that has not acknowledged a previous ADD_ADDR message.")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 120; + } else { + o = s.option(form.Value, "mptcp_fullmesh_num_subflows", _("Fullmesh subflows for each pair of IP addresses")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + //o.depends("mptcp_path_manager","fullmesh") + + o = s.option(form.ListValue, "mptcp_fullmesh_create_on_err", _("Re-create fullmesh subflows after a timeout")); + o.value(1, _("enable")); + o.value(0, _("disable")); + //o.depends("mptcp_path_manager","fullmesh"); + + o = s.option(form.Value, "mptcp_ndiffports_num_subflows", _("ndiffports subflows number")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + //o.depends("mptcp_path_manager","ndiffports") + + o = s.option(form.ListValue, "mptcp_rr_cwnd_limited", _("Fill the congestion window on all subflows for round robin")); + o.value("Y", _("enable")); + o.value("N", _("disable")); + o.default = "Y"; + //o.depends("mptcp_scheduler","roundrobin") + + o = s.option(form.Value, "mptcp_rr_num_segments", _("Consecutive segments that should be sent for round robin")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + //o.depends("mptcp_scheduler","roundrobin") + } + + s = m.section(form.TypedSection, "interface", _("Interfaces Settings")); + s.filter = function(section) { + return (!section.match("^oip.*") && !section.match("^lo.*") && section != "omrvpn" && section != "omr6in4"); + } + + o = s.option(form.ListValue, "multipath", _("Multipath TCP"), _("One interface must be set as master")); + o.value("on", _("enabled")); + o.value("off", _("disabled")); + o.value("master", _("master")); + o.value("backup", _("backup")); + //o.value("handover", _("handover")); + o.default = "off"; + + return m.render(); + } +}); \ No newline at end of file diff --git a/luci-app-mptcp/luasrc/controller/mptcp.lua b/luci-app-mptcp/luasrc/controller/mptcp.lua index 383498a75..b4c42b3ae 100644 --- a/luci-app-mptcp/luasrc/controller/mptcp.lua +++ b/luci-app-mptcp/luasrc/controller/mptcp.lua @@ -1,22 +1,32 @@ -- Copyright 2008 Steven Barth -- Copyright 2011 Jo-Philipp Wich --- Copyright 2018 Ycarus (Yannick Chabanois) +-- Copyright 2018-2023 Ycarus (Yannick Chabanois) -- Licensed to the public under the Apache License 2.0. module("luci.controller.mptcp", package.seeall) + function index() + local uname = nixio.uname() entry({"admin", "network", "mptcp"}, alias("admin", "network", "mptcp", "settings"), _("MPTCP")) - entry({"admin", "network", "mptcp", "settings"}, cbi("mptcp"), _("Settings"),2).leaf = true + if uname ~= nil and uname.release:sub(1,1) == "5" then + entry({"admin", "network", "mptcp", "settings"}, cbi("mptcp"), _("Settings"),2).leaf = true + else + entry({"admin", "network", "mptcp", "settings"}, view("mptcp/mptcp"), _("Settings"),2).leaf = true + end entry({"admin", "network", "mptcp", "bandwidth"}, template("mptcp/multipath"), _("Bandwidth"), 3).leaf = true entry({"admin", "network", "mptcp", "multipath_bandwidth"}, call("multipath_bandwidth")).leaf = true entry({"admin", "network", "mptcp", "interface_bandwidth"}, call("interface_bandwidth")).leaf = true - entry({"admin", "network", "mptcp", "mptcp_check"}, template("mptcp/mptcp_check"), _("MPTCP Support Check"), 4).leaf = true + if uname ~= nil and uname.release:sub(1,1) == "5" then + entry({"admin", "network", "mptcp", "mptcp_check"}, template("mptcp/mptcp_check"), _("MPTCP Support Check"), 4).leaf = true + end entry({"admin", "network", "mptcp", "mptcp_check_trace"}, post("mptcp_check_trace")).leaf = true entry({"admin", "network", "mptcp", "mptcp_fullmesh"}, template("mptcp/mptcp_fullmesh"), _("MPTCP Fullmesh"), 5).leaf = true entry({"admin", "network", "mptcp", "mptcp_fullmesh_data"}, post("mptcp_fullmesh_data")).leaf = true entry({"admin", "network", "mptcp", "mptcp_connections"}, template("mptcp/mptcp_connections"), _("Established connections"), 6).leaf = true entry({"admin", "network", "mptcp", "mptcp_connections_data"}, post("mptcp_connections_data")).leaf = true + entry({"admin", "network", "mptcp", "mptcp_monitor"}, template("mptcp/mptcp_monitor"), _("MPTCP monitoring"), 6).leaf = true + entry({"admin", "network", "mptcp", "mptcp_monitor_data"}, post("mptcp_monitor_data")).leaf = true end function interface_bandwidth(iface) @@ -61,7 +71,10 @@ function multipath_bandwidth() local label = s["label"] local dev = get_device(intname) if dev == "" then - dev = get_device(s["ifname"]) + dev = get_device(s["device"]) + if dev == "" then + dev = get_device(s["ifname"]) + end end local multipath = s["multipath"] or "" if dev ~= "lo" and dev ~= "" then @@ -72,7 +85,6 @@ function multipath_bandwidth() multipath = "off" end if multipath == "on" or multipath == "master" or multipath == "backup" or multipath == "handover" then - local bwc = luci.sys.exec("luci-bwc -i %q 2>/dev/null" % dev) or "" local bwc = luci.sys.exec("luci-bwc -i %q 2>/dev/null" % dev) or "" if bwc ~= nil then --result[dev] = "[" .. string.gsub(bwc, '[\r\n]', '') .. "]" @@ -116,20 +128,16 @@ function multipath_bandwidth() for i=1,60 do res[key][i] = string.split(res[key][i], ",") for j=1,5 do - if "string"== type(res[key][i][j]) then - res[key][i][j]= tonumber(res[key][i][j]) - end - if "string"==type(res["total"][i][j]) then - res["total"][i][j]= tonumber(res["total"][i][j]) - end + res[key][i][j]= tonumber(res[key][i][j]) + res["total"][i][j]= tonumber(res["total"][i][j]) if j ==1 then - if res[key][i][j] ~= nil then + if res[key][i][j] ~= nil and res[key][i][j] > 0 then res["total"][i][j] = res[key][i][j] else res["total"][i][j] = 0 end else - if res[key][i][j] ~= nil then + if res[key][i][j] ~= nil and res[key][i][j] > 0 then res["total"][i][j] = res["total"][i][j] + res[key][i][j] end end @@ -206,11 +214,26 @@ function mptcp_fullmesh_data() return end +function mptcp_monitor_data() + luci.http.prepare_content("text/plain") + local fullmesh + fullmesh = io.popen("multipath -m") + if fullmesh:read() ~= nil then + while true do + local ln = fullmesh:read("*l") + if not ln then break end + luci.http.write(ln) + luci.http.write("\n") + end + end + return +end + function mptcp_connections_data() luci.http.prepare_content("text/plain") local connections connections = io.popen("multipath -c") - if connections then + if connections:read() ~= nil then while true do local ln = connections:read("*l") if not ln then break end diff --git a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua index 5c32389fb..dea854e80 100644 --- a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua +++ b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua @@ -4,63 +4,197 @@ local ifaces = sys.net:devices() local m, s, o local uname = nixio.uname() -m = Map("network", translate("MPTCP"), translate("Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP for help.")) +m = Map("network", translate("MPTCP"), translate("Networks MPTCP settings.")) local unameinfo = nixio.uname() or { } s = m:section(TypedSection, "globals") -local mtcpg = s:option(ListValue, "multipath", translate("Multipath TCP")) -mtcpg:value("enable", translate("enable")) -mtcpg:value("disable", translate("disable")) -local mtcpck = s:option(ListValue, "mptcp_checksum", translate("Multipath TCP checksum")) -mtcpck:value(1, translate("enable")) -mtcpck:value(0, translate("disable")) -local mtcpck = s:option(ListValue, "mptcp_debug", translate("Multipath Debug")) -mtcpck:value(1, translate("enable")) -mtcpck:value(0, translate("disable")) -local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager")) -mtcppm:value("default", translate("default")) -mtcppm:value("fullmesh", translate("fullmesh")) -mtcppm:value("ndiffports", translate("ndiffports")) -mtcppm:value("binder", translate("binder")) -if uname.release:sub(1,4) ~= "4.14" then - mtcppm:value("netlink", translate("Netlink")) -end -local mtcpsch = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler")) -mtcpsch:value("default", translate("default")) -mtcpsch:value("roundrobin", translate("round-robin")) -mtcpsch:value("redundant", translate("redundant")) -if uname.release:sub(1,4) ~= "4.14" then - mtcpsch:value("blest", translate("BLEST")) - mtcpsch:value("ecf", translate("ECF")) -end -local mtcpsyn = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SYN retries")) -mtcpsyn.datatype = "uinteger" -mtcpsyn.rmempty = false -local congestion = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr")) -local availablecong = sys.exec("sysctl net.ipv4.tcp_available_congestion_control | awk -F'= ' '{print $NF}'") -for cong in string.gmatch(availablecong, "[^%s]+") do - congestion:value(cong, translate(cong)) -end -local mtcpfm_subflows = s:option(Value, "mptcp_fullmesh_num_subflows", translate("Fullmesh subflows for each pair of IP addresses")) -mtcpfm_subflows.datatype = "uinteger" -mtcpfm_subflows.rmempty = false -local mtcpfm_createonerr = s:option(ListValue, "mptcp_fullmesh_create_on_err", translate("Re-create fullmesh subflows after a timeout")) -mtcpfm_createonerr:value(1, translate("enable")) -mtcpfm_createonerr:value(0, translate("disable")) +o = s:option(ListValue, "multipath", translate("Multipath TCP")) +o:value("enable", translate("enable")) +o:value("disable", translate("disable")) +o = s:option(ListValue, "mptcp_checksum", translate("Multipath TCP checksum")) +o:value(1, translate("enable")) +o:value(0, translate("disable")) -local mtcpnd_subflows = s:option(Value, "mptcp_ndiffports_num_subflows", translate("ndiffports subflows number")) -mtcpnd_subflows.datatype = "uinteger" -mtcpnd_subflows.rmempty = false +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o = s:option(ListValue, "mptcp_debug", translate("Multipath Debug")) + o:value(1, translate("enable")) + o:value(0, translate("disable")) +end + +o = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"), translate("Default is fullmesh")) +o:value("default", translate("default")) +o:value("fullmesh", "fullmesh") +--if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o:value("ndiffports", "ndiffports") + o:value("binder", "binder") + if uname.release:sub(1,4) ~= "4.14" then + o:value("netlink", translate("Netlink")) + end +end +o = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler")) +o:value("default", translate("default")) +-- if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o:value("roundrobin", "round-robin") + o:value("redundant", "redundant") + if uname.release:sub(1,4) ~= "4.14" then + o:value("blest", "BLEST") + o:value("ecf", "ECF") + end +end +if uname.release:sub(1,3) == "6.6" then + for dir in io.popen([[cd /usr/share/bpf/scheduler && ls -1 *.o | sed -e 's/.o//g' -e 's/mptcp_//g']]):lines() do + o:value(dir, dir) + end + -- bpf_burst => same as the default scheduler + -- bpf_red => sends all packets redundantly on all available subflows + -- bpf_first => always picks the first subflow to send data + -- bpf_rr => always picks the next available subflow to send data (round-robin) +end + +-- if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SYN retries")) + o.datatype = "uinteger" + o.rmempty = false +end +-- if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o = s:option(ListValue, "mptcp_version", translate("Multipath TCP version")) + o:value(0, translate("0")) + o:value(1, translate("1")) + o.default = 0 +end +o = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr")) +local availablecong = sys.exec("sysctl -n net.ipv4.tcp_available_congestion_control | xargs -n1 | sort | xargs") +for cong in string.gmatch(availablecong, "[^%s]+") do + if cong == "bbr" and string.match(availablecong, "bbr1") then + o:value(cong, "bbr3") + else + o:value(cong, cong) + end +end + +-- if tonumber(uname.release:sub(1,4)) >= 5.15 then +if uname.release:sub(1,4) == "5.15" or uname.release:sub(1,1) == "6" then + if uname.release:sub(1,1) == "6" then + -- Only available since 5.19 + o = s:option(ListValue, "mptcp_pm_type", translate("Path Manager type")) + o:value(0, translate("In-kernel path manager")) + o:value(1, translate("Userspace path manager")) + o.default = 0 + end + + o = s:option(ListValue, "mptcp_disable_initial_config", translate("Initial MPTCP configuration")) + o:depends("mptcp_pm_type",1) + o:value("0", translate("enable")) + o:value("1", translate("disable")) + o.default = "0" + + o = s:option(ListValue, "mptcp_force_multipath", translate("Force Multipath configuration")) + o:depends("mptcp_pm_type",1) + o:value("1", translate("enable")) + o:value("0", translate("disable")) + o.default = "1" + + o = s:option(ListValue, "mptcpd_enable", translate("Enable MPTCPd")) + o:depends("mptcp_pm_type",1) + o:value("enable", translate("enable")) + o:value("disable", translate("disable")) + o.default = "disable" + + o = s:option(DynamicList, "mptcpd_path_manager", translate("MPTCPd path managers")) + for dir in io.popen([[cd /usr/lib/mptcpd && ls -1 *.so | sed 's/.so//g']]):lines() do + o:value(dir, dir) + end + o:depends("mptcp_pm_type",1) + + o = s:option(DynamicList, "mptcpd_plugins", translate("MPTCPd plugins")) + for dir in io.popen([[cd /usr/lib/mptcpd && ls -1 *.so | sed 's/.so//g']]):lines() do + o:value(dir, dir) + end + o:depends("mptcp_pm_type",1) + + o = s:option(DynamicList, "mptcpd_addr_flags", translate("MPTCPd Address annoucement flags")) + o:value("subflow","subflow") + o:value("signal","signal") + o:value("backup","backup") + o:value("fullmesh","fullmesh") + o:depends("mptcp_pm_type",1) + + o = s:option(DynamicList, "mptcpd_notify_flags", translate("MPTCPd Address notification flags")) + o:value("existing","existing") + o:value("skip_link_local","skip_link_local") + o:value("skip_loopback","skip_loopback") + o:depends("mptcp_pm_type",1) + + o = s:option(Value, "mptcp_subflows", translate("Max subflows"),translate("specifies the maximum number of additional subflows allowed for each MPTCP connection")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 3 + + o = s:option(Value, "mptcp_stale_loss_cnt", translate("Retranmission intervals"),translate("The number of MPTCP-level retransmission intervals with no traffic and pending outstanding data on a given subflow required to declare it stale. A low stale_loss_cnt value allows for fast active-backup switch-over, an high value maximize links utilization on edge scenarios e.g. lossy link with high BER or peer pausing the data processing.")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 4 + + o = s:option(Value, "mptcp_add_addr_accepted", translate("Max add address"),translate("specifies the maximum number of ADD_ADDR (add address) suboptions accepted for each MPTCP connection")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + + o = s:option(Value, "mptcp_add_addr_timeout", translate("Control message timeout"),translate("Set the timeout after which an ADD_ADDR (add address) control message will be resent to an MPTCP peer that has not acknowledged a previous ADD_ADDR message.")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 120 + +else + o = s:option(Value, "mptcp_fullmesh_num_subflows", translate("Fullmesh subflows for each pair of IP addresses")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + --o:depends("mptcp_path_manager","fullmesh") + + o = s:option(ListValue, "mptcp_fullmesh_create_on_err", translate("Re-create fullmesh subflows after a timeout")) + o:value(1, translate("enable")) + o:value(0, translate("disable")) + --o:depends("mptcp_path_manager","fullmesh") + + o = s:option(Value, "mptcp_ndiffports_num_subflows", translate("ndiffports subflows number")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + --o:depends("mptcp_path_manager","ndiffports") + + o = s:option(ListValue, "mptcp_rr_cwnd_limited", translate("Fill the congestion window on all subflows for round robin")) + o:value("Y", translate("enable")) + o:value("N", translate("disable")) + o.default = "Y" + --o:depends("mptcp_scheduler","roundrobin") + + o = s:option(Value, "mptcp_rr_num_segments", translate("Consecutive segments that should be sent for round robin")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + --o:depends("mptcp_scheduler","roundrobin") +end s = m:section(TypedSection, "interface", translate("Interfaces Settings")) -mptcp = s:option(ListValue, "multipath", translate("Multipath TCP"), translate("One interface must be set as master")) -mptcp:value("on", translate("enabled")) -mptcp:value("off", translate("disabled")) -mptcp:value("master", translate("master")) -mptcp:value("backup", translate("backup")) ---mptcp:value("handover", translate("handover")) -mptcp.default = "off" +function s.filter(self, section) + return not section:match("^oip.*") and not section:match("^lo.*") and section ~= "omrvpn" and section ~= "omr6in4" +end +o = s:option(ListValue, "multipath", translate("Multipath TCP"), translate("One interface must be set as master")) +o:value("on", translate("enabled")) +o:value("off", translate("disabled")) +o:value("master", translate("master")) +o:value("backup", translate("backup")) +--o:value("handover", translate("handover")) +o.default = "off" +function m.on_after_apply(self,map) + sys.call('/etc/init.d/mptcp reload') +end return m diff --git a/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm b/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm index 3df062637..7cd2a7645 100644 --- a/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm +++ b/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm @@ -69,5 +69,7 @@
+
+ <%:If you get "TCPOptionMPTCPCapable [...] Sender's Key" at the end, then MPTCP is supported. If there is a "-TCPOptionMPTCPCapable", then it's blocked.%>
<%+footer%> diff --git a/luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm b/luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm new file mode 100644 index 000000000..ec4eb5606 --- /dev/null +++ b/luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm @@ -0,0 +1,42 @@ +<%+header%> + + + + +<% if stderr and #stderr > 0 then %>
<%=pcdata(stderr)%>
<% end %> +
+ + +
+<%+footer%> diff --git a/luci-app-mptcp/luasrc/view/mptcp/multipath.htm b/luci-app-mptcp/luasrc/view/mptcp/multipath.htm index 8d375c359..01abf6a7f 100644 --- a/luci-app-mptcp/luasrc/view/mptcp/multipath.htm +++ b/luci-app-mptcp/luasrc/view/mptcp/multipath.htm @@ -85,6 +85,7 @@ function bandwidth_label(bytes, br) { + if (bytes < 0) bytes = 0; var uby = '<%:kB/s%>'; var kby = (bytes / 1024); @@ -238,8 +239,8 @@ labelup_25.parentNode.appendChild(textup); } - labeldn_scale.innerHTML = String.format('<%:(%d minutes window, %d seconds interval)%>', 3, data_wanted / 60); - labelup_scale.innerHTML = String.format('<%:(%d minutes window, %d seconds interval)%>', 3, data_wanted / 60); + labeldn_scale.innerHTML = String.format('<%:(%d minutes window, %d seconds interval)%>', 4, data_wanted / 60); + labelup_scale.innerHTML = String.format('<%:(%d minutes window, %d seconds interval)%>', 4, data_wanted / 60); /* render datasets, start update interval */ XHR.poll(3, '<%=build_url(bandwidthtotalurl, all)%>', null, diff --git a/luci-app-mptcp/po/de/mptcp.po b/luci-app-mptcp/po/de/mptcp.po index 3adc07169..a67d0bbce 100644 --- a/luci-app-mptcp/po/de/mptcp.po +++ b/luci-app-mptcp/po/de/mptcp.po @@ -10,27 +10,23 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.4\n" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:652 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" msgstr "(Fenster von %d Minuten, %d Sekunden Intervall)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:227 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:228 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" msgstr "(Fenster %d Minunten, %d Sekunden Intervall)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:284 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:323 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:796 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:806 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "Durchschnitt:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:34 -msgid "BLEST" -msgstr "Blockierungsvorhersage-Betrieb" - #: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "Bandbreite" @@ -41,27 +37,38 @@ msgstr "" "Prüfung auf transparenten Transport von MPTCP-Paketen zwischen Anschluss und " "Server." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:39 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 msgid "Congestion Control" msgstr "Überlauf-Steuerung" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:280 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "derzeit:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:39 -msgid "Default is bbr" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#, fuzzy +msgid "Default is cubic" msgstr "Voreinstellung ist 'bbr'" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:772 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +msgid "Default is fullmesh" +msgstr "Voreinstellung ist 'bbr'" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "Downstream:" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 msgid "Error" msgstr "Fehler" @@ -69,13 +76,28 @@ msgstr "Fehler" msgid "Established connections" msgstr "aufgebaute Verbindungen" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:44 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 msgid "Fullmesh subflows for each pair of IP addresses" msgstr "" "Datenströme im vollvermaschter Betrieb für die jeweiligen Gegegenstellen-" "Paare" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:793 +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "Ankommend:" @@ -83,23 +105,25 @@ msgstr "Ankommend:" msgid "Interface" msgstr "Schnittstelle" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:55 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "Anschluss-Einstellungen" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Loading" msgstr "Wird geladen" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:79 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:563 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "MByte/s" #: luci-app-mptcp/luasrc/controller/mptcp.lua:9 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 msgid "MPTCP" msgstr "MPTCP" @@ -112,8 +136,12 @@ msgstr "MPTCP Vollvermaschung" msgid "MPTCP Support Check" msgstr "Prüfung auf Transparenz für MPTCP" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:572 +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" msgstr "MBit/s" @@ -122,11 +150,11 @@ msgid "Multipath Debug" msgstr "Mehrfachausbreitungspfad-Analyse" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" msgstr "Multipath-TCP" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:36 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" msgstr "Multipath TCP SYN Wiederholungen" @@ -138,11 +166,17 @@ msgstr "Multipath TCP Prüfummen" msgid "Multipath TCP path-manager" msgstr "Multipath TCP Pfadkontrolle" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" msgstr "Multpath TCP Priorisierungskontrolle" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Multipath-TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 msgid "Netlink" msgstr "Netlink-Layer" @@ -156,27 +190,27 @@ msgstr "" "tcp.org/pmwiki.php/Users/ConfigureMPTCP'>http://multipath-tcp.org/pmwiki.php/" "Users/ConfigureMPTCP (english)." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" msgstr "Ein Anschluss muss als 'primär' defininiert werden." -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:803 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 msgid "Outbound:" msgstr "Abgehend:" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:288 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:327 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:799 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:809 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "Spitze:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" msgstr "Wiederverbindungs-Wartezeit der Vollvermaschungs-Verbindungen" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:762 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "Echtzeit-Daten" @@ -189,109 +223,127 @@ msgstr "Einstellungen" msgid "Test" msgstr "Test" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:778 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "Upstream:" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Waiting for command to complete..." msgstr "Warte auf Abschluss der Aufgaben" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:60 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" msgstr "Sicherung" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:25 -msgid "binder" -msgstr "Bindung" - #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "Voreinstellung" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:49 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "ausschalten" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:58 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "aus" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:48 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "anschalten" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "an" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:23 -msgid "fullmesh" -msgstr "Vollvermaschung" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:61 -msgid "handover" -msgstr "Übergabe" - -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:74 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:330 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:558 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:794 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:797 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:800 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:804 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:807 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:810 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kB/s" msgstr "kBytes/s" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:83 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:330 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:567 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:794 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:797 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:800 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:804 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:807 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:810 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kbit/s" msgstr "kBit/s" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "primär" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:24 -msgid "ndiffports" -msgstr "ndiff-Ports" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:51 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" msgstr "ndiff-Ports Verbindungs-Nummer" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 -msgid "redundant" -msgstr "redundant" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 -msgid "round-robin" -msgstr "Rundlauf-Verfahren" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#~ msgid "BLEST" +#~ msgstr "Blockierungsvorhersage-Betrieb" + +#~ msgid "binder" +#~ msgstr "Bindung" + +#~ msgid "fullmesh" +#~ msgstr "Vollvermaschung" + +#~ msgid "handover" +#~ msgstr "Übergabe" + +#~ msgid "ndiffports" +#~ msgstr "ndiff-Ports" + +#~ msgid "redundant" +#~ msgstr "redundant" + +#~ msgid "round-robin" +#~ msgstr "Rundlauf-Verfahren" diff --git a/luci-app-mptcp/po/de/mptcp.po~ b/luci-app-mptcp/po/de/mptcp.po~ new file mode 100644 index 000000000..dd585adf2 --- /dev/null +++ b/luci-app-mptcp/po/de/mptcp.po~ @@ -0,0 +1,327 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(Fenster von %d Minuten, %d Sekunden Intervall)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(Fenster %d Minunten, %d Sekunden Intervall)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Durchschnitt:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Bandbreite" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "" +"Prüfung auf transparenten Transport von MPTCP-Paketen zwischen Anschluss und " +"Server." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +msgid "Congestion Control" +msgstr "Überlauf-Steuerung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "derzeit:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is cubic" +msgstr "Voreinstellung ist 'bbr'" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is fullmesh" +msgstr "Voreinstellung ist 'bbr'" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Downstream:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Fehler" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "aufgebaute Verbindungen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:63 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:46 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "" +"Datenströme im vollvermaschter Betrieb für die jeweiligen Gegegenstellen-" +"Paare" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Ankommend:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Schnittstelle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:75 +msgid "Interfaces Settings" +msgstr "Anschluss-Einstellungen" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Wird geladen" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MByte/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Vollvermaschung" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Prüfung auf Transparenz für MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "MBit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Mehrfachausbreitungspfad-Analyse" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "Multipath TCP" +msgstr "Multipath-TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +msgid "Multipath TCP SYN retries" +msgstr "Multipath TCP SYN Wiederholungen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Multipath TCP Prüfummen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Multipath TCP Pfadkontrolle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +msgid "Multipath TCP scheduler" +msgstr "Multpath TCP Priorisierungskontrolle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +msgid "Netlink" +msgstr "Netlink-Layer" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Netzwerk-MPTCP Einstellungen. Dokumentation auf http://multipath-tcp.org/pmwiki.php/" +"Users/ConfigureMPTCP (english)." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "One interface must be set as master" +msgstr "Ein Anschluss muss als 'primär' defininiert werden." + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Abgehend:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Spitze:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Wiederverbindungs-Wartezeit der Vollvermaschungs-Verbindungen" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Echtzeit-Daten" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Einstellungen" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Test" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Upstream:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "Warte auf Abschluss der Aufgaben" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "backup" +msgstr "Sicherung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +msgid "default" +msgstr "Voreinstellung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:54 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:65 +msgid "disable" +msgstr "ausschalten" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:78 +msgid "disabled" +msgstr "aus" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:53 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "enable" +msgstr "anschalten" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:77 +msgid "enabled" +msgstr "an" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kBytes/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kBit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:79 +msgid "master" +msgstr "primär" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +msgid "ndiffports subflows number" +msgstr "ndiff-Ports Verbindungs-Nummer" + +#~ msgid "BLEST" +#~ msgstr "Blockierungsvorhersage-Betrieb" + +#~ msgid "binder" +#~ msgstr "Bindung" + +#~ msgid "fullmesh" +#~ msgstr "Vollvermaschung" + +#~ msgid "handover" +#~ msgstr "Übergabe" + +#~ msgid "ndiffports" +#~ msgstr "ndiff-Ports" + +#~ msgid "redundant" +#~ msgstr "redundant" + +#~ msgid "round-robin" +#~ msgstr "Rundlauf-Verfahren" diff --git a/luci-app-mptcp/po/fr/mptcp.po b/luci-app-mptcp/po/fr/mptcp.po index f8a44eee9..b47876f87 100644 --- a/luci-app-mptcp/po/fr/mptcp.po +++ b/luci-app-mptcp/po/fr/mptcp.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-10-07 10:57+0000\n" +"PO-Revision-Date: 2022-08-10 18:51+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -11,62 +11,175 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.10.1\n" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" msgstr "(fenêtre de %d minute, intervalle de %d seconde)" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" msgstr "(fenêtre de %d minutes, intervalle de %d secondes)" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "Moyenne :" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "Bande passante" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Vérifiez si MPTCP entre l'interface et le serveur fonctionne." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 msgid "Congestion Control" msgstr "Contrôle de la congestion" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "Segments consécutifs à envoyer pour round robin" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "Actuellement :" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "La valeur par défaut est cubic" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" +msgstr "La valeur par défaut est fullmesh" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "Téléchargement :" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Erreur" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connexions établies" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" +"Remplir la fenêtre de congestion de tous les sous-flux pour round robin" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 msgid "Fullmesh subflows for each pair of IP addresses" msgstr "Sous-flux Fullmesh pour chaque paire d'adresses IP" +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "Accorder l'accès UCI pour luci-app-mlvpn" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" +"Si vous obtenez «TCPOptionMPTCPCapable [...] Sender's Key» à la fin, alors " +"MPTCP est pris en charge. Si il y a \"-TCPOptionMPTCPCapable\", alors il est " +"bloqué." + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "Entrant :" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interface" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "Paramètres des interfaces" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Chargement" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "Mo/s" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 msgid "MPTCP" msgstr "MPTCP" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Vérification du support MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "Surveillance MPTCP" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" msgstr "Mbit/s" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Débogage multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" msgstr "Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" msgstr "Tentatives Multipath TCP SYN" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 msgid "Multipath TCP checksum" msgstr "Somme de contrôle Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 msgid "Multipath TCP path-manager" msgstr "Gestionnaire de chemins Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" msgstr "Planificateur Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +msgid "Multipath TCP version" +msgstr "Version de Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "Netlink" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 msgid "" "Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" @@ -76,74 +189,163 @@ msgstr "" "php/Users/ConfigureMPTCP'>http://multipath-tcp.org/pmwiki.php/Users/" "ConfigureMPTCP pour de l'aide." +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" msgstr "Une interface doit être configuré en temps que maître" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 msgid "Outbound:" msgstr "Sortant :" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "Pointe :" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" msgstr "Recréer les sous-flux fullmesh après le délai d'expiration" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "Trafic temps réel" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 msgid "Settings" msgstr "Paramètres" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Essai" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" +"Le nombre d'intervalles de retransmission au niveau de MPTCP sans trafic et " +"en attente de données sur un sous-flux requis pour le déclarer obsolète" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "Envoie :" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "En attente de la réponse de la commande..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" msgstr "remplaçant" -msgid "binder" -msgstr "lier" - +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "Défaut" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "Désactive" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "Désactivé" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "Active" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "Activé" -msgid "fullmesh" -msgstr "fullmesh" - -msgid "handover" -msgstr "relais" - +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kB/s" msgstr "Ko/s" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kbit/s" msgstr "kbit/s" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "maître" -msgid "ndiffports" -msgstr "ndiffports" - +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" msgstr "Nombre de sous-flux ndiffports" -msgid "redundant" -msgstr "redondant" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" +"spécifie le nombre maximum de sous-options ADD_ADDR acceptées pour chaque " +"connexion MPTCP" -msgid "round-robin" -msgstr "à tour de rôle" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" +"spécifie le nombre maximum de sous-flux ADD_ADDR acceptées pour chaque " +"connexion MPTCP" + +#~ msgid "binder" +#~ msgstr "lier" + +#~ msgid "handover" +#~ msgstr "relais" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "redondant" + +#~ msgid "round-robin" +#~ msgstr "à tour de rôle" #~ msgid "Networks MPTCP settings" #~ msgstr "Paramètres réseaux MPTCP" diff --git a/luci-app-mptcp/po/it/mptcp.po b/luci-app-mptcp/po/it/mptcp.po index 272ac94dc..78e5a223e 100644 --- a/luci-app-mptcp/po/it/mptcp.po +++ b/luci-app-mptcp/po/it/mptcp.po @@ -10,27 +10,23 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.4\n" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:779 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" msgstr "(finestra di% d minuti, intervallo di% d secondi)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:245 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:246 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" msgstr "(finestra di% d minuti, intervallo di% d secondi)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "Media:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:34 -msgid "BLEST" -msgstr "BLEST" - #: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "Larghezza banda" @@ -39,31 +35,38 @@ msgstr "Larghezza banda" msgid "Check if MPTCP between interface and server is working." msgstr "Controlla se MPTCP tra l'interfaccia e il server funziona." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 msgid "Congestion Control" msgstr "Controllo della congestione" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "Corrente:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 -msgid "Default is bbr" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#, fuzzy +msgid "Default is cubic" +msgstr "L'impostazione predefinita è bbr" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +msgid "Default is fullmesh" msgstr "L'impostazione predefinita è bbr" #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "Scarica:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:35 -msgid "ECF" -msgstr "ECF" - #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 msgid "Error" msgstr "Errore" @@ -71,7 +74,11 @@ msgstr "Errore" msgid "Established connections" msgstr "Connessioni stabilite" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:45 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 msgid "Fullmesh subflows for each pair of IP addresses" msgstr "Flussi secondari fullmesh per ogni coppia di indirizzi IP" @@ -79,6 +86,13 @@ msgstr "Flussi secondari fullmesh per ogni coppia di indirizzi IP" msgid "Grant UCI access for luci-app-mptcp" msgstr "Concedi l'accesso UCI per luci-app-mptcp" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "In entrata:" @@ -87,18 +101,19 @@ msgstr "In entrata:" msgid "Interface" msgstr "Interfaccia" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "Impostazioni delle interfacce" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Loading" msgstr "Caricamento in corso" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:90 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "MB/s" @@ -117,8 +132,12 @@ msgstr "MPTCP Fullmesh" msgid "MPTCP Support Check" msgstr "Verifica supporto MPTCP" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:99 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:699 +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" msgstr "Mbit/s" @@ -127,11 +146,11 @@ msgid "Multipath Debug" msgstr "Debug multipath" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" msgstr "Multipath TCP" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" msgstr "Multipath TCP SYN riprova" @@ -143,11 +162,17 @@ msgstr "Multipath TCP checksum" msgid "Multipath TCP path-manager" msgstr "Multipath TCP path-manager" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" msgstr "Multipath TCP scheduler" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 msgid "Netlink" msgstr "Netlink" @@ -158,7 +183,7 @@ msgid "" "ConfigureMPTCP for help." msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" msgstr "Un'interfaccia deve essere impostata come master" @@ -166,19 +191,19 @@ msgstr "Un'interfaccia deve essere impostata come master" msgid "Outbound:" msgstr "Upload:" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:323 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:381 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "Picco:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:48 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" msgstr "Ricrea i flussi secondari fullmesh dopo un timeout" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:895 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "Traffico in tempo reale" @@ -191,6 +216,12 @@ msgstr "Impostazioni" msgid "Test" msgstr "Test" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "Upload:" @@ -198,56 +229,51 @@ msgstr "Upload:" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Waiting for command to complete..." msgstr "In attesa del completamento del comando ..." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:61 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" msgstr "backup" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:25 -msgid "binder" -msgstr "" - #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "predefinito" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:50 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "disabilita" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "disabilitato" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:49 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "Attivare" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:58 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "Abilitato" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:23 -msgid "fullmesh" -msgstr "fullmesh" - -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:85 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:384 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:685 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 @@ -257,14 +283,14 @@ msgstr "fullmesh" msgid "kB/s" msgstr "kB/s" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:94 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:384 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:694 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 @@ -274,22 +300,40 @@ msgstr "kB/s" msgid "kbit/s" msgstr "kbit/s" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:60 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "Principale" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:24 -msgid "ndiffports" -msgstr "ndiffports" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" msgstr "ndiffports subflows number" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 -msgid "redundant" -msgstr "ridondante" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 -msgid "round-robin" -msgstr "round-robin" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "ECF" +#~ msgstr "ECF" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "ridondante" + +#~ msgid "round-robin" +#~ msgstr "round-robin" diff --git a/luci-app-mptcp/po/it/mptcp.po~ b/luci-app-mptcp/po/it/mptcp.po~ new file mode 100644 index 000000000..a9bc32b78 --- /dev/null +++ b/luci-app-mptcp/po/it/mptcp.po~ @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-01 10:49+0000\n" +"Last-Translator: Giuseppe Dipierro \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(finestra di% d minuti, intervallo di% d secondi)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(finestra di% d minuti, intervallo di% d secondi)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Media:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Larghezza banda" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Controlla se MPTCP tra l'interfaccia e il server funziona." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +msgid "Congestion Control" +msgstr "Controllo della congestione" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Corrente:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is cubic" +msgstr "L'impostazione predefinita è bbr" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is fullmesh" +msgstr "L'impostazione predefinita è bbr" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Scarica:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Errore" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connessioni stabilite" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:63 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:46 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Flussi secondari fullmesh per ogni coppia di indirizzi IP" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "Concedi l'accesso UCI per luci-app-mptcp" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "In entrata:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interfaccia" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:75 +msgid "Interfaces Settings" +msgstr "Impostazioni delle interfacce" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Caricamento in corso" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MB/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Verifica supporto MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Debug multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "Multipath TCP" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +msgid "Multipath TCP SYN retries" +msgstr "Multipath TCP SYN riprova" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Multipath TCP checksum" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Multipath TCP path-manager" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +msgid "Multipath TCP scheduler" +msgstr "Multipath TCP scheduler" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +msgid "Netlink" +msgstr "Netlink" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "One interface must be set as master" +msgstr "Un'interfaccia deve essere impostata come master" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Upload:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Picco:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Ricrea i flussi secondari fullmesh dopo un timeout" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Traffico in tempo reale" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Impostazioni" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Test" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Upload:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "In attesa del completamento del comando ..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "backup" +msgstr "backup" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +msgid "default" +msgstr "predefinito" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:54 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:65 +msgid "disable" +msgstr "disabilita" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:78 +msgid "disabled" +msgstr "disabilitato" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:53 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "enable" +msgstr "Attivare" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:77 +msgid "enabled" +msgstr "Abilitato" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:79 +msgid "master" +msgstr "Principale" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +msgid "ndiffports subflows number" +msgstr "ndiffports subflows number" + +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "ECF" +#~ msgstr "ECF" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "ridondante" + +#~ msgid "round-robin" +#~ msgstr "round-robin" diff --git a/luci-app-mptcp/po/oc/mptcp.po b/luci-app-mptcp/po/oc/mptcp.po index 45a6903a2..f9bd5bda5 100644 --- a/luci-app-mptcp/po/oc/mptcp.po +++ b/luci-app-mptcp/po/oc/mptcp.po @@ -10,28 +10,23 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.0.4\n" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:652 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" msgstr "(fenèstra de %d minuta,interval de %d segonda)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:227 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:228 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" msgstr "(fenèstra de %d minutas,interval de %d segondas)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:284 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:323 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:796 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:806 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "Mejana :" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:34 -#, fuzzy -msgid "BLEST" -msgstr "BLEST" - #: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "Benda passanta" @@ -40,27 +35,38 @@ msgstr "Benda passanta" msgid "Check if MPTCP between interface and server is working." msgstr "Verificar se MPTCP entre l‘interfàcia e lo servidor fonciona." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:39 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 msgid "Congestion Control" msgstr "Contraròtle de congestion" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:280 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "Actualament :" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:39 -msgid "Default is bbr" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#, fuzzy +msgid "Default is cubic" msgstr "Per defaut bbr" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:772 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +msgid "Default is fullmesh" +msgstr "Per defaut bbr" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "Telecargament :" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 msgid "Error" msgstr "Error" @@ -68,11 +74,26 @@ msgstr "Error" msgid "Established connections" msgstr "Connexions establidas" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:44 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 msgid "Fullmesh subflows for each pair of IP addresses" msgstr "Jos flux Fullmesh per cada parelh d’adreças IP" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:793 +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "Dintrant :" @@ -80,23 +101,25 @@ msgstr "Dintrant :" msgid "Interface" msgstr "Interfàcia" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:55 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "Paramètres de las interfàcias" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Loading" msgstr "Cargament" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:79 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:563 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "Mo/s" #: luci-app-mptcp/luasrc/controller/mptcp.lua:9 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 msgid "MPTCP" msgstr "MPTCP" @@ -109,8 +132,12 @@ msgstr "MPTCP Fullmesh" msgid "MPTCP Support Check" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:572 +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" msgstr "Mbit/s" @@ -119,11 +146,11 @@ msgid "Multipath Debug" msgstr "Desbugatge multipath" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" msgstr "Multipath TCP" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:36 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" msgstr "Ensages Multipath TCP SYN" @@ -135,11 +162,17 @@ msgstr "Sòma de contraròtle Multipath TCP" msgid "Multipath TCP path-manager" msgstr "Gestionari dels camins Multipath TCP" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" msgstr "Planificator Multipath TCP" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 msgid "Netlink" msgstr "Ligam ret" @@ -153,27 +186,27 @@ msgstr "" "Users/ConfigureMPTCP'>http://multipath-tcp.org/pmwiki.php/Users/" "ConfigureMPTCP per d’ajuda." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" msgstr "Una interfàcia deu èsser configurada coma principala" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:803 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 msgid "Outbound:" msgstr "Sortent :" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:288 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:327 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:799 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:809 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "Punta :" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" msgstr "Tornar crear los jos-flus fullmesh aprèp lo relambi d’expiracion" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:762 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "Trafic dirèct" @@ -186,109 +219,128 @@ msgstr "Paramètres" msgid "Test" msgstr "Pròva" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:778 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "Mandadís :" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Waiting for command to complete..." msgstr "En espèra d’una responsa de la comanda..." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:60 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" msgstr "subordinat" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:25 -msgid "binder" -msgstr "associar" - #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "Defaut" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:49 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "desactivar" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:58 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "desactivat" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:48 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "Activar" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "Activat" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:23 -msgid "fullmesh" -msgstr "fullmesh" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:61 -msgid "handover" -msgstr "relai" - -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:74 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:330 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:558 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:794 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:797 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:800 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:804 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:807 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:810 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kB/s" msgstr "kB/s" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:83 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:330 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:567 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:794 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:797 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:800 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:804 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:807 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:810 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kbit/s" msgstr "kbit/s" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "màger" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:24 -msgid "ndiffports" -msgstr "ndiffports" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:51 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" msgstr "Nombre de jos-flux ndiffports" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 -msgid "redundant" -msgstr "redondant" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 -msgid "round-robin" -msgstr "cadun son torn" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#, fuzzy +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "binder" +#~ msgstr "associar" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "handover" +#~ msgstr "relai" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "redondant" + +#~ msgid "round-robin" +#~ msgstr "cadun son torn" diff --git a/luci-app-mptcp/po/oc/mptcp.po~ b/luci-app-mptcp/po/oc/mptcp.po~ new file mode 100644 index 000000000..2ebb121a6 --- /dev/null +++ b/luci-app-mptcp/po/oc/mptcp.po~ @@ -0,0 +1,324 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-19 09:37+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(fenèstra de %d minuta,interval de %d segonda)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(fenèstra de %d minutas,interval de %d segondas)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Mejana :" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Benda passanta" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Verificar se MPTCP entre l‘interfàcia e lo servidor fonciona." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +msgid "Congestion Control" +msgstr "Contraròtle de congestion" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Actualament :" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is cubic" +msgstr "Per defaut bbr" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is fullmesh" +msgstr "Per defaut bbr" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Telecargament :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Error" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connexions establidas" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:63 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:46 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Jos flux Fullmesh per cada parelh d’adreças IP" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Dintrant :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interfàcia" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:75 +msgid "Interfaces Settings" +msgstr "Paramètres de las interfàcias" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Cargament" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "Mo/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Desbugatge multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "Multipath TCP" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +msgid "Multipath TCP SYN retries" +msgstr "Ensages Multipath TCP SYN" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Sòma de contraròtle Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Gestionari dels camins Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +msgid "Multipath TCP scheduler" +msgstr "Planificator Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +msgid "Netlink" +msgstr "Ligam ret" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Paramètres ret MPTCP. Consulatz http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP per d’ajuda." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "One interface must be set as master" +msgstr "Una interfàcia deu èsser configurada coma principala" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Sortent :" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Punta :" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Tornar crear los jos-flus fullmesh aprèp lo relambi d’expiracion" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Trafic dirèct" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Pròva" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Mandadís :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "En espèra d’una responsa de la comanda..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "backup" +msgstr "subordinat" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +msgid "default" +msgstr "Defaut" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:54 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:65 +msgid "disable" +msgstr "desactivar" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:78 +msgid "disabled" +msgstr "desactivat" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:53 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "enable" +msgstr "Activar" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:77 +msgid "enabled" +msgstr "Activat" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:79 +msgid "master" +msgstr "màger" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +msgid "ndiffports subflows number" +msgstr "Nombre de jos-flux ndiffports" + +#, fuzzy +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "binder" +#~ msgstr "associar" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "handover" +#~ msgstr "relai" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "redondant" + +#~ msgid "round-robin" +#~ msgstr "cadun son torn" diff --git a/luci-app-mptcp/po/ru/mptcp.po b/luci-app-mptcp/po/ru/mptcp.po new file mode 100644 index 000000000..bdd6ac158 --- /dev/null +++ b/luci-app-mptcp/po/ru/mptcp.po @@ -0,0 +1,325 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(% d минутное окно,% d секундный интервал)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(% d минутное окно,% d секундный интервал)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Среднее:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Пропускная способность" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Проверьте, работает ли MPTCP между интерфейсом и сервером." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Congestion Control" +msgstr "Контроль перегрузки" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "Последовательные сегменты, которые следует отправлять для round-robin" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Текущая:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "По умолчанию кубический" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" +msgstr "По умолчанию - fullmesh" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Загрузка:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Ошибка" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Установленные соединения" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "Заполнение окна перегрузки для всех подпотоков для round-robin" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Подпотоки Fullmesh для каждой пары IP-адресов" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "Предоставить доступ UCI для luci-app-mptcp" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" +"Если в конце вы получите «TCPOptionMPTCPCapable [...] Sender's Key», то " +"MPTCP поддерживается. Если \"-TCPOptionMPTCPCapable\", то MPTCP заблокирован." + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Входящий:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Интерфейс" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 +msgid "Interfaces Settings" +msgstr "Настройки интерфейсов" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Загрузка" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MB/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Проверка поддержки MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "Мониторинг MPTCP" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Многоуровневая отладка" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "Multipath TCP" +msgstr "Многопоточный TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 +msgid "Multipath TCP SYN retries" +msgstr "Попытки многопоточной TCP SYN" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Контрольная сумма многопоточного TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Многопоточный TCP менеджер" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 +msgid "Multipath TCP scheduler" +msgstr "Планировщик многопоточного TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Многопоточный TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "Netlink" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Настройки сети MPTCP. Посетите http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP для справки." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "One interface must be set as master" +msgstr "Один интерфейс должен быть установлен как главный" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Отправка:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Пиковое значение:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Повторно создать подпотоки fullmesh после тайм-аута" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Трафик в реальном времени" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Настройки" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Тест" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Отправка:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "Ожидание завершения команды..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 +msgid "backup" +msgstr "Резервирование" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 +msgid "default" +msgstr "По умолчанию" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 +msgid "disable" +msgstr "отключить" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 +msgid "disabled" +msgstr "отключить" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 +msgid "enable" +msgstr "включить" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 +msgid "enabled" +msgstr "Установлено" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 +msgid "master" +msgstr "мастер" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 +msgid "ndiffports subflows number" +msgstr "количество подпотоков ndiffports" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" diff --git a/luci-app-mptcp/po/templates/mptcp.pot b/luci-app-mptcp/po/templates/mptcp.pot index f784674a3..dfecf162a 100644 --- a/luci-app-mptcp/po/templates/mptcp.pot +++ b/luci-app-mptcp/po/templates/mptcp.pot @@ -1,27 +1,23 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:779 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:245 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:246 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:34 -msgid "BLEST" -msgstr "" - #: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "" @@ -30,31 +26,36 @@ msgstr "" msgid "Check if MPTCP between interface and server is working." msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 msgid "Congestion Control" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 -msgid "Default is bbr" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" msgstr "" #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:35 -msgid "ECF" -msgstr "" - #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 msgid "Error" msgstr "" @@ -62,7 +63,11 @@ msgstr "" msgid "Established connections" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:45 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 msgid "Fullmesh subflows for each pair of IP addresses" msgstr "" @@ -70,6 +75,13 @@ msgstr "" msgid "Grant UCI access for luci-app-mptcp" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "" @@ -78,18 +90,19 @@ msgstr "" msgid "Interface" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Loading" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:90 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "" @@ -108,8 +121,12 @@ msgstr "" msgid "MPTCP Support Check" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:99 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:699 +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" msgstr "" @@ -118,11 +135,11 @@ msgid "Multipath Debug" msgstr "" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" msgstr "" @@ -134,11 +151,15 @@ msgstr "" msgid "Multipath TCP path-manager" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +msgid "Multipath TCP version" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 msgid "Netlink" msgstr "" @@ -149,7 +170,7 @@ msgid "" "ConfigureMPTCP for help." msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" msgstr "" @@ -157,19 +178,19 @@ msgstr "" msgid "Outbound:" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:323 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:381 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:48 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:895 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "" @@ -182,6 +203,12 @@ msgstr "" msgid "Test" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "" @@ -189,56 +216,51 @@ msgstr "" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Waiting for command to complete..." msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:61 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:25 -msgid "binder" -msgstr "" - #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:50 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:49 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:58 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:23 -msgid "fullmesh" -msgstr "" - -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:85 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:384 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:685 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 @@ -248,14 +270,14 @@ msgstr "" msgid "kB/s" msgstr "" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:94 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:384 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:694 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 @@ -265,22 +287,22 @@ msgstr "" msgid "kbit/s" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:60 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:24 -msgid "ndiffports" -msgstr "" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 -msgid "redundant" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 -msgid "round-robin" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" msgstr "" diff --git a/luci-app-mptcp/po/zh_Hans/mptcp.po b/luci-app-mptcp/po/zh_Hans/mptcp.po index f40ceecd8..36a27a977 100644 --- a/luci-app-mptcp/po/zh_Hans/mptcp.po +++ b/luci-app-mptcp/po/zh_Hans/mptcp.po @@ -1,36 +1,32 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:02+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2022-08-12 19:29+0000\n" +"Last-Translator: Weblate Admin \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.10.1\n" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:652 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" msgstr "(%d 分钟刷新, %d 秒钟刷新)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:227 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:228 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" msgstr "(%d 分钟间隔, %d 秒钟刷新)" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:284 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:323 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:796 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:806 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "平均:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:34 -msgid "BLEST" -msgstr "蚂蚁最好的" - #: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "带宽" @@ -39,27 +35,36 @@ msgstr "带宽" msgid "Check if MPTCP between interface and server is working." msgstr "检查接口和服务器之间的MPTCP是否正常工作." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:39 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 msgid "Congestion Control" msgstr "阻塞控制" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:280 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "连续轮播应发送的连续段" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "实时:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:39 -msgid "Default is bbr" -msgstr "默认设置bbr" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "默认设置 cubic" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:772 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" +msgstr "默认设置fullmesh" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "下载:" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 msgid "Error" msgstr "错误" @@ -67,11 +72,26 @@ msgstr "错误" msgid "Established connections" msgstr "建立的连接" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:44 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "在循环的所有子流上填充拥塞窗口" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 msgid "Fullmesh subflows for each pair of IP addresses" msgstr "每对IP地址的全网格子流" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:793 +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "授予UCI访问luci-app-mptcp的权限" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "如果您在末尾获得“TCPOptionMPTCPCapable [...] Sender 's Key” ,则支持MPTCP" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "入站:" @@ -79,25 +99,27 @@ msgstr "入站:" msgid "Interface" msgstr "接口" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:55 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "网卡设置" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Loading" msgstr "载入中" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:79 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:563 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "MB/s" #: luci-app-mptcp/luasrc/controller/mptcp.lua:9 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 msgid "MPTCP" -msgstr "聚合" +msgstr "MPTCP" #: luci-app-mptcp/luasrc/controller/mptcp.lua:16 msgid "MPTCP Fullmesh" @@ -108,21 +130,25 @@ msgstr "设置MPTCP全网" msgid "MPTCP Support Check" msgstr "MPTCP支持检查" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:572 +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "MPTCP监控" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" -msgstr "Mbit/秒" +msgstr "Mbit/s" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 msgid "Multipath Debug" msgstr "Multipath 调试" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" msgstr "多路径TCP" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:36 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" msgstr "多路径 TCP SYN 重试" @@ -134,11 +160,16 @@ msgstr "多路径TCP校验和" msgid "Multipath TCP path-manager" msgstr "多路径TCP路径管理器" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" msgstr "多路径TCP调度程序" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +msgid "Multipath TCP version" +msgstr "多路径TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 msgid "Netlink" msgstr "网络链接" @@ -149,30 +180,30 @@ msgid "" "ConfigureMPTCP for help." msgstr "" "网络MPTCP设置. 访问http://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP4" -" 获取更多的支持." +"ConfigureMPTCP'>http://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP4 获取更多的支持." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:56 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" -msgstr "蚂蚁提醒您必须设置一个网卡为主接口" +msgstr "必须设置一个网卡为主接口" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:803 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 msgid "Outbound:" msgstr "出站:" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:288 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:327 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:799 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:809 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "峰值:" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" msgstr "超时后重新创建全网格子流" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:762 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "实时流量" @@ -185,109 +216,127 @@ msgstr "设置" msgid "Test" msgstr "测试" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:778 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "上传:" #: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 #: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 msgid "Waiting for command to complete..." msgstr "等待命令完成..." -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:60 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" msgstr "备份" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:25 -msgid "binder" -msgstr "设置binder" - #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "默认" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:49 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "禁用" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:58 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "禁用" #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 #: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:48 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "启用" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "启用" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:23 -msgid "fullmesh" -msgstr "全网" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:61 -msgid "handover" -msgstr "移除" - -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:74 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:330 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:558 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:794 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:797 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:800 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:804 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:807 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:810 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kB/s" msgstr "kB/秒" -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:83 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:283 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:287 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:291 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 #: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:326 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:330 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:567 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:794 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:797 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:800 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:804 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:807 -#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:810 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kbit/s" msgstr "kbit/秒" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "主" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:24 -msgid "ndiffports" -msgstr "设置ndiffports" - -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:51 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" msgstr "ndiffports子流数" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 -msgid "redundant" -msgstr "冗余" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" -#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 -msgid "round-robin" -msgstr "轮询" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#~ msgid "BLEST" +#~ msgstr "最好的" + +#~ msgid "binder" +#~ msgstr "设置binder" + +#~ msgid "fullmesh" +#~ msgstr "全网" + +#~ msgid "handover" +#~ msgstr "移除" + +#~ msgid "ndiffports" +#~ msgstr "设置ndiffports" + +#~ msgid "redundant" +#~ msgstr "冗余" + +#~ msgid "round-robin" +#~ msgstr "轮询" diff --git a/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json b/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json index d07f07916..eaf813e8c 100644 --- a/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json +++ b/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json @@ -2,7 +2,16 @@ "luci-app-mptcp": { "description": "Grant UCI access for luci-app-mptcp", "read": { - "uci": [ "openmptcprouter", "network" ] + "uci": [ "openmptcprouter", "network" ], + "file": { + "/usr/lib/mptcpd": [ "list" ], + "/usr/share/bpf/scheduler": [ "list" ], + "/sbin/sysctl -n net.ipv4.tcp_available_congestion_control": [ "exec" ] + }, + "ubus": { + "file": [ "list", "exec" ], + "system": [ "board" ] + } }, "write": { "uci": [ "openmptcprouter", "network" ] diff --git a/luci-app-omr-bypass/Makefile b/luci-app-omr-bypass/Makefile index cbce20358..1ceb86669 100644 --- a/luci-app-omr-bypass/Makefile +++ b/luci-app-omr-bypass/Makefile @@ -6,7 +6,13 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Interface to bypass domains -LUCI_DEPENDS:=+dnsmasq-full +shadowsocks-libev-ss-rules +iptables-mod-ndpi +iptables-mod-extra +kmod-ipt-ndpi +iptables +#LUCI_DEPENDS:=+dnsmasq-full +shadowsocks-libev-ss-rules +(LINUX_5_4||LINUX_5_15||TARGET_x86_64):iptables-mod-ndpi +iptables-mod-extra +(LINUX_5_4||LINUX_5_15||TARGET_x86_64):kmod-ipt-ndpi +iptables +LUCI_DEPENDS:=+LINUX_5_4:omr-bypass +!LINUX_5_4:omr-bypass-nft +#ifneq ($(CONFIG_TARGET_ramips),y) +# #LUCI_DEPENDS+=+(LINUX_5_4||LINUX_5_15):iptables-mod-ndpi +(LINUX_5_4||LINUX_5_15):kmod-ipt-ndpi +# LUCI_DEPENDS+=+iptables-mod-ndpi +kmod-ipt-ndpi +#endif + PKG_LICENSE:=GPLv3 diff --git a/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js b/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js index 109279953..08955491c 100644 --- a/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js +++ b/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js @@ -15,14 +15,31 @@ return L.view.extend({ }), load: function() { - return this.callHostHints(); + return Promise.all([ + L.resolveDefault(fs.stat('/proc/net/xt_ndpi/proto'), null), + this.callHostHints(), + L.resolveDefault(fs.read_direct('/proc/net/xt_ndpi/proto'), ''), + L.resolveDefault(fs.read_direct('/proc/net/xt_ndpi/host_proto'), ''), + fs.read_direct('/usr/share/omr-bypass/omr-bypass-proto.lst') + ]); }, - render: function(hosts) { - var m, s, o; + render: function(testhosts) { + var m, s, o, hosts; + hosts = testhosts[1]; m = new form.Map('omr-bypass', _('OMR-Bypass'),_('OpenMPTCProuter IP must be used as DNS.')); + /* + s = m.section(form.TypedSection, 'global', _('Global settings')); + s.addremove = false; + s.anonymous = true; + + o = s.option(form.Flag, 'noipv6', _('Disable IPv6 AAAA DNS results for bypassed domains')); + o.default = o.disabled; + o.optional = true; + */ + s = m.section(form.GridSection, 'domains', _('Domains')); s.addremove = true; s.anonymous = true; @@ -34,14 +51,29 @@ return L.view.extend({ o = s.option(form.Value, 'name', _('Domain')); o.rmempty = false; - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used.')); + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); o.noaliases = true; o.noinactive = true; o.nocreate = true; + o.depends('vpn', '0'); o = s.option(form.Value, 'note', _('Note')); o.rmempty = true; + o = s.option(form.ListValue, 'family', _('Restrict to address family')); + o.value('ipv4ipv6', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.default = 'ipv4ipv6'; + o.modalonly = true + + o = s.option(form.Flag, 'noipv6', _('Disable AAAA IPv6 DNS')); + o.default = o.enabled; + o.modalonly = true + s = m.section(form.GridSection, 'ips', _('IPs and Networks')); s.addremove = true; s.anonymous = true; @@ -53,10 +85,14 @@ return L.view.extend({ o = s.option(form.Value, 'ip', _('IP')); o.rmempty = false; - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used.')); + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); o.noaliases = true; o.noinactive = true; o.nocreate = true; + o.depends('vpn', '0'); o = s.option(form.Value, 'note', _('Note')); o.rmempty = true; @@ -79,7 +115,7 @@ return L.view.extend({ o.value('udp'); o.value('icmp'); - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used.')); + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); o.noaliases = true; o.noinactive = true; o.nocreate = true; @@ -105,7 +141,7 @@ return L.view.extend({ o.value('udp'); o.value('icmp'); - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used.')); + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); o.noaliases = true; o.noinactive = true; o.nocreate = true; @@ -129,7 +165,7 @@ return L.view.extend({ o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); }); - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used.')); + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); o.noaliases = true; o.noinactive = true; o.nocreate = true; @@ -155,7 +191,7 @@ return L.view.extend({ } }); - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used.')); + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); o.noaliases = true; o.noinactive = true; o.nocreate = true; @@ -174,10 +210,14 @@ return L.view.extend({ o = s.option(form.Value, 'asn', _('ASN')); o.rmempty = false; - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used.')); + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); o.noaliases = true; o.noinactive = true; o.nocreate = true; + o.depends('vpn', '0'); o = s.option(form.Value, 'note', _('Note')); o.rmempty = true; @@ -190,42 +230,73 @@ return L.view.extend({ o = s.option(form.Flag, 'enabled', _('Enabled')); o.default = o.enabled; - o = s.option(form.Value, 'proto', _('Protocol/Service')); + o = s.option(form.ListValue, 'proto', _('Protocol/Service')); o.rmempty = false; o.load = function(section_id) { - return Promise.all([ - fs.read_direct('/proc/net/xt_ndpi/proto'), - fs.read_direct('/proc/net/xt_ndpi/host_proto') - ]).then(L.bind(function(filesi) { - var proto = filesi[0].split(/\n/), - host = filesi[1].split(/\n/), - name = []; + var proto = testhosts[2].split(/\n/), + host = testhosts[3].split(/\n/), + protofile = testhosts[4].split(/\n/), + name = []; + if (proto.length > 2) { for (var i = 0; i < proto.length; i++) { var m = proto[i].split(/\s+/); if (m && m[0] != "#id" && m[1] != "disabled") name.push(m[2]); } + } + if (host.length > 2) { for (var i = 0; i < host.length; i++) { var m = host[i].split(/:/); if (m && m[0] != "#Proto") name.push(m[0].toLowerCase()); } - name = Array.from(new Set(name)).sort(function (a, b) { return a.toLowerCase().localeCompare(b.toLowerCase())}).reduce(function(a, b){ if (a.slice(-1)[0] !== b) a.push(b);return a;},[]); - for (var i = 0; i < name.length; i++) { - this.value(name[i]); + } + if (proto.length == 1 && host.length == 1) { + for (var i = 0; i < protofile.length; i++) { + var m = protofile[i]; + name.push(m); } - return this.super('load', [section_id]); - },this)); + } + if (host.length > 2) { + name = Array.from(new Set(name)).sort(function (a, b) { return a.toLowerCase().localeCompare(b.toLowerCase())}).reduce(function(a, b){ if (a.slice(-1)[0] !== b) a.push(b);return a;},[]); + } + for (var i = 0; i < name.length; i++) { + this.value(name[i]); + } + return this.super('load', [section_id]); + }; - o = s.option(widgets.DeviceSelect, 'interface', _('Interface'),_('When none selected, MPTCP master interface is used (or an other interface if master is down).')); + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used (or an other interface if master is down).')); o.noaliases = true; o.noinactive = true; o.nocreate = true; + o.depends('vpn', '0'); o = s.option(form.Value, 'note', _('Note')); o.rmempty = true; + o = s.option(form.ListValue, 'family', _('Restrict to address family')); + o.value('ipv4ipv6', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.default = 'ipv4ipv6'; + o.modalonly = true + + o = s.option(form.Flag, 'noipv6', _('Disable AAAA IPv6 DNS')); + o.default = true; + o.modalonly = true + + if (testhosts[0]) { + o = s.option(form.Flag, 'ndpi', _('Enable ndpi')); + o.default = o.enabled; + o.modalonly = true + o.depends('vpn', '0'); + } + return m.render(); } }); diff --git a/luci-app-omr-bypass/po/de/omr-bypass.po b/luci-app-omr-bypass/po/de/omr-bypass.po index 659b03508..ae3c0f8dd 100644 --- a/luci-app-omr-bypass/po/de/omr-bypass.po +++ b/luci-app-omr-bypass/po/de/omr-bypass.po @@ -10,113 +10,153 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.4\n" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:64 -msgid "MAC-Address" -msgstr "MAC-Addresse" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:100 -msgid "ASN" -msgstr "ASN" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:52 -msgid "ALL" -msgstr "ALLE" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:105 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 msgid "ASN" msgstr "ASN" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:9 -msgid "Bypass" -msgstr "Ausnahmeregel" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:150 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:151 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:152 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:153 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:154 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:155 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:156 -msgid "Default" -msgstr "Voreinstellung" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:16 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 msgid "Domain" msgstr "Domain" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:11 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 msgid "Domains" msgstr "Domains" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:9 -msgid "" -"Here you can bypass ShadowSocks and VPN. If you set Interface to Default " -"this use any working interface." +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" msgstr "" -"Her können Ausnahmen für ShadowSocks und VPN eingetragen werden. Wird als " -"Schnittstelle 'Voreinstellung' gewählt, wird eine beliebige gerade " -"funktionsfähige gewählt (Load Balancing)." -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:31 +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 msgid "IP" msgstr "IP" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:90 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 msgid "IP Address" msgstr "IP Adresse" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:26 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 msgid "IPs and Networks" msgstr "IPs und Netzwerke" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:21 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:36 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:59 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:80 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:95 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:109 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 msgid "Interface" msgstr "Schnittstelle" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:24 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:39 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:62 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:83 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:98 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:112 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:140 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +#, fuzzy +msgid "MAC-Address" +msgstr "Quell-MAC-Adresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 msgid "Note" msgstr "Bemerkung" -#: luci-app-omr-bypass/luasrc/controller/omr-bypass.lua:6 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 msgid "OMR-Bypass" msgstr "OMR-Ausnahmeregel" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 msgid "Ports destination" msgstr "Ziel-Port" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:51 -msgid "Protocol" -msgstr "Protokoll" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:119 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 msgid "Protocol/Service" msgstr "Protokoll/Dienst" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:114 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 msgid "Protocols and services" msgstr "Protokolle und Dienste" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:69 -msgid "Source MAC-Address" -msgstr "Quell-MAC-Adresse" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:85 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 msgid "Source lan IP address or network" msgstr "LAN-IP oder CIDR-Netzwerk der Quelleadresse" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:47 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 msgid "port" msgstr "Port" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +#, fuzzy +msgid "protocol" +msgstr "Protokoll" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +#, fuzzy +msgid "source MAC-Address" +msgstr "Quell-MAC-Adresse" + +#~ msgid "MAC-Address" +#~ msgstr "MAC-Addresse" + +#~ msgid "ASN" +#~ msgstr "ASN" + +#~ msgid "ALL" +#~ msgstr "ALLE" + +#~ msgid "Bypass" +#~ msgstr "Ausnahmeregel" + +#~ msgid "Default" +#~ msgstr "Voreinstellung" + +#~ msgid "" +#~ "Here you can bypass ShadowSocks and VPN. If you set Interface to Default " +#~ "this use any working interface." +#~ msgstr "" +#~ "Her können Ausnahmen für ShadowSocks und VPN eingetragen werden. Wird als " +#~ "Schnittstelle 'Voreinstellung' gewählt, wird eine beliebige gerade " +#~ "funktionsfähige gewählt (Load Balancing)." diff --git a/luci-app-omr-bypass/po/de/omr-bypass.po~ b/luci-app-omr-bypass/po/de/omr-bypass.po~ new file mode 100644 index 000000000..188cfb056 --- /dev/null +++ b/luci-app-omr-bypass/po/de/omr-bypass.po~ @@ -0,0 +1,165 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Domain" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domains" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "IP Adresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IPs und Netzwerke" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Schnittstelle" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +#, fuzzy +#| msgid "Source MAC-Address" +msgid "MAC-Address" +msgstr "Quell-MAC-Adresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Bemerkung" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Ausnahmeregel" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Ziel-Port" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protokoll/Dienst" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protokolle und Dienste" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "LAN-IP oder CIDR-Netzwerk der Quelleadresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Port" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +#, fuzzy +#| msgid "Protocol" +msgid "protocol" +msgstr "Protokoll" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +#, fuzzy +#| msgid "Source MAC-Address" +msgid "source MAC-Address" +msgstr "Quell-MAC-Adresse" + +#~ msgid "MAC-Address" +#~ msgstr "MAC-Addresse" + +#~ msgid "ASN" +#~ msgstr "ASN" + +#~ msgid "ALL" +#~ msgstr "ALLE" + +#~ msgid "Bypass" +#~ msgstr "Ausnahmeregel" + +#~ msgid "Default" +#~ msgstr "Voreinstellung" + +#~ msgid "" +#~ "Here you can bypass ShadowSocks and VPN. If you set Interface to Default " +#~ "this use any working interface." +#~ msgstr "" +#~ "Her können Ausnahmen für ShadowSocks und VPN eingetragen werden. Wird als " +#~ "Schnittstelle 'Voreinstellung' gewählt, wird eine beliebige gerade " +#~ "funktionsfähige gewählt (Load Balancing)." diff --git a/luci-app-omr-bypass/po/fr/omr-bypass.po b/luci-app-omr-bypass/po/fr/omr-bypass.po index 1370c6f88..0e9543bdf 100644 --- a/luci-app-omr-bypass/po/fr/omr-bypass.po +++ b/luci-app-omr-bypass/po/fr/omr-bypass.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-08-03 12:39+0000\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -11,118 +11,160 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:64 -msgid "MAC-Address" -msgstr "Adresse MAC" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:100 -msgid "ASN" -msgstr "ASN" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:52 -msgid "ALL" -msgstr "TOUT" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:105 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 msgid "ASN" msgstr "ASN" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:9 -msgid "Bypass" -msgstr "Contourne" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:150 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:151 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:152 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:153 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:154 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:155 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:156 -msgid "Default" -msgstr "Défaut" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:16 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 msgid "Domain" msgstr "Domaine" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:11 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 msgid "Domains" msgstr "Domaines" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:9 -msgid "" -"Here you can bypass ShadowSocks and VPN. If you set Interface to Default " -"this use any working interface." -msgstr "" -"Ici vous pouvez contouner Shadowsocks et le VPN. Si vous mettez l'interface " -"à défaut, ça utilisera n'importe qu'elle interface fonctionnant." +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "Activer" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:31 +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Accorder l'accès aux ressources ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 msgid "IP" msgstr "IP" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:90 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 msgid "IP Address" msgstr "Adresse IP" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:26 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 msgid "IPs and Networks" msgstr "IPs et réseaux" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:21 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:36 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:59 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:80 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:95 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:109 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 msgid "Interface" msgstr "Interface" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:24 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:39 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:62 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:83 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:98 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:112 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:140 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "Adresse MAC" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 msgid "Note" msgstr "Note" -#: luci-app-omr-bypass/luasrc/controller/omr-bypass.lua:6 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 msgid "OMR-Bypass" msgstr "OMR-Bypass" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP d'OpenMPTCProuter doit être utilisée comme DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 msgid "Ports destination" msgstr "Ports de destination" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:51 -msgid "Protocol" -msgstr "Protocole" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Ports source" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:119 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 msgid "Protocol/Service" msgstr "Protocole/Service" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:114 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 msgid "Protocols and services" msgstr "Protocoles et services" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:69 -msgid "Source MAC-Address" -msgstr "Adresse MAC source" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:85 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 msgid "Source lan IP address or network" msgstr "Adresse IP source ou réseau" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:47 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" +"Lorsqu'aucune interface est sélectionnée, l'interface maître MPTCP est " +"utilisée (ou une autre interface si le maître est arrêté)." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" +"Lorsqu'aucune interface est sélectionnée, l'interface maître MPTCP est " +"utilisée." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 msgid "port" msgstr "port" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "protocole" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "Adresse MAC source" + +#~ msgid "MAC-Address" +#~ msgstr "Adresse MAC" + +#~ msgid "ASN" +#~ msgstr "ASN" + +#~ msgid "ALL" +#~ msgstr "TOUT" + +#~ msgid "Bypass" +#~ msgstr "Contourne" + +#~ msgid "Default" +#~ msgstr "Défaut" + +#~ msgid "" +#~ "Here you can bypass ShadowSocks and VPN. If you set Interface to Default " +#~ "this use any working interface." +#~ msgstr "" +#~ "Ici vous pouvez contouner Shadowsocks et le VPN. Si vous mettez " +#~ "l'interface à défaut, ça utilisera n'importe qu'elle interface " +#~ "fonctionnant." + #~ msgid "Add" #~ msgstr "Ajouter" @@ -135,9 +177,6 @@ msgstr "port" #~ msgid "Domains, ips or networks" #~ msgstr "Domaines, IPs et réseaux" -#~ msgid "MAC-Address" -#~ msgstr "Adresse MAC" - #~ msgid "Output interface" #~ msgstr "Interface de sortie" diff --git a/luci-app-omr-bypass/po/it/omr-bypass.po b/luci-app-omr-bypass/po/it/omr-bypass.po index c26d571f3..203394eec 100644 --- a/luci-app-omr-bypass/po/it/omr-bypass.po +++ b/luci-app-omr-bypass/po/it/omr-bypass.po @@ -1,21 +1,21 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-10-02 08:44+0000\n" -"Last-Translator: Weblate Admin \n" +"PO-Revision-Date: 2022-02-21 21:14+0000\n" +"Last-Translator: Deleted User \n" "Language-Team: Italian \n" "Language: it\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.10.1\n" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:153 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 msgid "ASN" msgstr "ASN" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 msgid "Domain" msgstr "Dominio" @@ -23,45 +23,56 @@ msgstr "Dominio" msgid "Domains" msgstr "Domini" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "Abilitato" + #: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 msgid "Grant access to ndpi resources" msgstr "Concedi l'accesso alle risorse ndpi" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:47 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 msgid "IP" msgstr "IP" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:130 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 msgid "IP Address" msgstr "Indirizzo IP" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 msgid "IPs and Networks" msgstr "IP e reti" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:73 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:96 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:117 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:156 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:197 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 msgid "Interface" msgstr "Interfaccia" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:104 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 msgid "MAC-Address" msgstr "Indirizzo MAC" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:39 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:55 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:78 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:122 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:161 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:202 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 msgid "Note" msgstr "Nota" @@ -74,49 +85,57 @@ msgstr "OMR-Bypass" msgid "OpenMPTCProuter IP must be used as DNS." msgstr "L'IP di OpenMPTCProuter deve essere utilizzato come DNS." -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:58 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 msgid "Ports destination" msgstr "Destinazione dei porti" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:81 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 msgid "Ports source" msgstr "Origine delle porte" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:169 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 msgid "Protocol/Service" msgstr "Protocollo / servizio" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:164 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 msgid "Protocols and services" msgstr "Protocolli e servizi" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:125 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 msgid "Source lan IP address or network" msgstr "Indirizzo IP lan di origine o rete" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:73 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:96 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:117 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:156 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:197 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" +"Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " +"MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 msgid "When none selected, MPTCP master interface is used." msgstr "" "Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " "MPTCP." -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:63 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:86 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 msgid "port" msgstr "Porta" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:66 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:89 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 msgid "protocol" msgstr "Protocollo" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:109 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 msgid "source MAC-Address" msgstr "indirizzo MAC di origine" diff --git a/luci-app-omr-bypass/po/it/omr-bypass.po~ b/luci-app-omr-bypass/po/it/omr-bypass.po~ new file mode 100644 index 000000000..c7e10446a --- /dev/null +++ b/luci-app-omr-bypass/po/it/omr-bypass.po~ @@ -0,0 +1,142 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-02 08:44+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Dominio" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domini" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Concedi l'accesso alle risorse ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "Indirizzo IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IP e reti" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Interfaccia" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "Indirizzo MAC" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Nota" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Bypass" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP di OpenMPTCProuter deve essere utilizzato come DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Destinazione dei porti" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Origine delle porte" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protocollo / servizio" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protocolli e servizi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Indirizzo IP lan di origine o rete" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +#| msgid "When none selected, MPTCP master interface is used." +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" +"Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " +"MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" +"Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " +"MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Porta" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "Protocollo" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "indirizzo MAC di origine" diff --git a/luci-app-omr-bypass/po/oc/omr-bypass.po b/luci-app-omr-bypass/po/oc/omr-bypass.po index f980655c9..d2583d441 100644 --- a/luci-app-omr-bypass/po/oc/omr-bypass.po +++ b/luci-app-omr-bypass/po/oc/omr-bypass.po @@ -10,12 +10,12 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.0.4\n" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:153 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 msgid "ASN" msgstr "ASN" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 msgid "Domain" msgstr "Domeni" @@ -23,45 +23,56 @@ msgstr "Domeni" msgid "Domains" msgstr "Domenis" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + #: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 msgid "Grant access to ndpi resources" msgstr "Acordar l'accès a las ressorsas ndpi" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:47 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 msgid "IP" msgstr "IP" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:130 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 msgid "IP Address" msgstr "Adreça IP" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 msgid "IPs and Networks" msgstr "IPs e rets" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:73 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:96 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:117 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:156 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:197 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 msgid "Interface" msgstr "Interfàcia" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:104 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 msgid "MAC-Address" msgstr "Adreça MAC" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:39 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:55 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:78 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:122 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:161 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:202 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 msgid "Note" msgstr "Nòta" @@ -74,47 +85,53 @@ msgstr "OMR-Bypass" msgid "OpenMPTCProuter IP must be used as DNS." msgstr "L'IP d'OpznMPTCProuter deu èsser coma lo DNS." -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:58 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 msgid "Ports destination" msgstr "Pòrts de destinacion" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:81 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 msgid "Ports source" msgstr "Pòrts fonts" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:169 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 msgid "Protocol/Service" msgstr "Protocòl/Servici" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:164 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 msgid "Protocols and services" msgstr "Protocòls e servicis" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:125 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 msgid "Source lan IP address or network" msgstr "Adreça IP font o rer" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:73 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:96 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:117 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:156 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:197 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 msgid "When none selected, MPTCP master interface is used." msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:63 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:86 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 msgid "port" msgstr "pòrt" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:66 -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:89 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 msgid "protocol" msgstr "protocòl" -#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:109 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 msgid "source MAC-Address" msgstr "Adreça MAC font" diff --git a/luci-app-omr-bypass/po/oc/omr-bypass.po~ b/luci-app-omr-bypass/po/oc/omr-bypass.po~ new file mode 100644 index 000000000..27f06969c --- /dev/null +++ b/luci-app-omr-bypass/po/oc/omr-bypass.po~ @@ -0,0 +1,138 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-18 18:16+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Domeni" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domenis" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Acordar l'accès a las ressorsas ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "Adreça IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IPs e rets" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Interfàcia" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "Adreça MAC" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Nòta" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Bypass" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP d'OpznMPTCProuter deu èsser coma lo DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Pòrts de destinacion" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Pòrts fonts" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protocòl/Servici" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protocòls e servicis" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Adreça IP font o rer" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +#| msgid "When none selected, MPTCP master interface is used." +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "pòrt" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "protocòl" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "Adreça MAC font" diff --git a/luci-app-omr-bypass/po/ru/omr-bypass.po b/luci-app-omr-bypass/po/ru/omr-bypass.po new file mode 100644 index 000000000..7b6f43c6f --- /dev/null +++ b/luci-app-omr-bypass/po/ru/omr-bypass.po @@ -0,0 +1,139 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Домен" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Домены" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Полный доступ к ресурсам ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "IP-адрес" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IP-адреса и сети" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Интерфейс" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "MAC-адрес" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Примечание" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR байпас" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "IP OpenMPTCProuter должен использоваться в качестве DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Порты назначения" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Порты источника" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Протокол / Сервис" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Протоколы и сервисы" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Исходный IP-адрес LAN или сеть" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" +"Если ничего не выбрано, используется главный интерфейс MPTCP (или другой " +"интерфейс, если мастер не работает)." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "Если ничего не выбрано, используется главный интерфейс MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Порт" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "протокол" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "MAC-адрес источника" diff --git a/luci-app-omr-bypass/po/zh_Hans/omr-bypass.po b/luci-app-omr-bypass/po/zh_Hans/omr-bypass.po index d28ea26d8..66a55bb21 100644 --- a/luci-app-omr-bypass/po/zh_Hans/omr-bypass.po +++ b/luci-app-omr-bypass/po/zh_Hans/omr-bypass.po @@ -1,119 +1,136 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-09-02 05:14+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:64 -msgid "MAC-Address" -msgstr "MAC4-地址" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:100 -msgid "ASN" -msgstr "ASN4" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:52 -msgid "ALL" -msgstr "所有" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:105 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 msgid "ASN" msgstr "ASN" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:9 -msgid "Bypass" -msgstr "绕过" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:150 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:151 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:152 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:153 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:154 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:155 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:156 -msgid "Default" -msgstr "默认" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:16 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 msgid "Domain" -msgstr "域名" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:11 -msgid "Domains" msgstr "域" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:9 -msgid "" -"Here you can bypass ShadowSocks and VPN. If you set Interface to Default " -"this use any working interface." -msgstr "在这里,您可以绕过ShadowSocks和VPN. 如果将网卡设置为默认则可以使用任何工作网卡." +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "域名" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "启用" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "授予对ndpi资源的访问权限" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 msgid "IP" msgstr "IP" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:90 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 msgid "IP Address" msgstr "IP地址" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:26 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 msgid "IPs and Networks" msgstr "IP和网络" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:21 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:36 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:59 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:80 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:95 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:109 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 msgid "Interface" msgstr "接口" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:24 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:39 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:62 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:83 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:98 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:112 -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:140 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "MAC地址" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 msgid "Note" -msgstr "注意" +msgstr "请注意" -#: luci-app-omr-bypass/luasrc/controller/omr-bypass.lua:6 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 msgid "OMR-Bypass" -msgstr "OMR-绕过" +msgstr "绕过聚合路由" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "OpenMPTCProuter IP必须作为DNS。" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 msgid "Ports destination" msgstr "目的端口" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:51 -msgid "Protocol" -msgstr "协议" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "源端口" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:119 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 msgid "Protocol/Service" msgstr "协议/服务" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:114 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 msgid "Protocols and services" msgstr "协议和服务" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:69 -msgid "Source MAC-Address" -msgstr "源MAC地址" - -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:85 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 msgid "Source lan IP address or network" msgstr "源局域网IP地址或网络" -#: luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua:47 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "当未选中时,使用MPTCP主接口(如果主接口下线,则使用其他接口)。" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "当不选中时,使用MPTCP主接口。" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 msgid "port" msgstr "端口" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "协议" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "源MAC地址" diff --git a/luci-app-omr-bypass/root/etc/firewall.omr-bypass b/luci-app-omr-bypass/root/etc/firewall.omr-bypass deleted file mode 100644 index fe65adb2f..000000000 --- a/luci-app-omr-bypass/root/etc/firewall.omr-bypass +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/etc/init.d/omr-bypass reload_rules diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass deleted file mode 100755 index 3708a0fce..000000000 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ /dev/null @@ -1,775 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) - -START=99 -STOP=10 -USE_PROCD=1 -EXTRA_COMMANDS="reload_rules bypass_asn" - -. /usr/lib/unbound/iptools.sh - -_add_proto() { - protoname=$1 - if [ "$(dd if=/proc/net/xt_ndpi/proto bs=4096 2> /dev/null | grep $protoname)" = "" ]; then - echo "add_custom $protoname" >/proc/net/xt_ndpi/proto - fi - hosts="$( uci -q get omr-bypass.$protoname.url )" - for url in $hosts; do - echo "$protoname:$url" >/proc/net/xt_ndpi/host_proto - done - ip="$( uci -q get omr-bypass.$protoname.ip )" - for ip in $ips; do - echo "$protoname:$ip" >/proc/net/xt_ndpi/ip_proto - done -} - -_bypass_ip() { - local ip=$1 - local type=$2 - [ -z "$type" ] && type="all" - valid_ip4=$( valid_subnet4 $ip) - valid_ip6=$( valid_subnet6 $ip) - if [ "$valid_ip4" = "ok" ]; then - ipset -q add omr_dst_bypass_$type $ip - elif [ "$valid_ip6" = "ok" ]; then - ipset -q add omr6_dst_bypass_$type $ip - fi -} - -_bypass_domains() { - local domain - local intf - local enabled - config_get domain $1 name - config_get intf $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - _bypass_domain $domain $intf -} - -_bypass_domain() { - local domain=$1 - local intf=$2 - - [ -z "$intf" ] && intf="all" - if [ -n "$domain" ]; then - domain=$(echo $domain | sed 's:^\.::') - #logger -t "omr-bypass" "Get IPs of $domain..." - if [ -z $RELOAD ]; then - resolve=$(dig a +timeout=1 +tries=1 +nocmd +noall +answer $domain | grep -v CNAME | awk '{print $5}') - for ip in $resolve; do - _bypass_ip $ip $intf - done - if [ "$disableipv6" = "0" ]; then - resolve=$(dig aaaa +timeout=1 +tries=1 +nocmd +noall +answer $domain | grep AAAA | awk '{print $5}') - for ip in $resolve; do - _bypass_ip $ip $intf - done - fi - fi - if [ "$(uci -q get dhcp.@dnsmasq[0].ipset | grep /$domain/)" = "" ]; then - uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intf,omr6_dst_bypass_$intf" - else - dnsmasqipset=$(uci -q get dhcp.@dnsmasq[0].ipset | sed 's/ /\n/g') - for dnsipset in $dnsmasqipset; do - if [ "$(echo $dnsipset | cut -d/ -f2)" = "$domain" ]; then - uci -q del_list dhcp.@dnsmasq[0].ipset=$dnsipset - uci -q add_list dhcp.@dnsmasq[0].ipset="$dnsipset,omr_dst_bypass_$intf,omr6_dst_bypass_$intf" - fi - done - fi - #logger -t "omr-bypass" "Get IPs of $domain... Done" - fi -} - -_bypass_mac() { - local mac - local intf - local enabled - config_get mac $1 mac - config_get intf $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$mac" ] && return - if [ "$intf" = "all" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -m mac --mac-source $mac -j MARK --set-mark 0x539 - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -m mac --mac-source $mac -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - else - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -m mac --mac-source $mac -j MARK --set-mark 0x539$intfid - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -m mac --mac-source $mac -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi - fi -} - -_bypass_lan_ip() { - local ip - local intf - local enabled - config_get ip $1 ip - config_get intf $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$ip" ] && return - valid_ip4=$(valid_subnet4 $ip) - valid_ip6=$(valid_subnet6 $ip) - if [ "$intf" = "all" ]; then - if [ "$valid_ip4" = "ok" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -s $ip -j MARK --set-mark 0x539 - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-local -s $ip -j MARK --set-mark 0x539 - COMMIT - EOF - elif [ "$valid_ip6" = "ok" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -s $ip -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - else - if [ "$valid_ip4" = "ok" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -s $ip -j MARK --set-mark 0x539$intfid - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-local -s $ip -j MARK --set-mark 0x539$intfid - COMMIT - EOF - elif [ "$valid_ip6" = "ok" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -s $ip -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi - fi -} - -_bypass_dest_port() { - local intf - local enabled - local dport - local proto - config_get dport $1 dport - config_get proto $1 proto - config_get intf $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$dport" ] && return - dport="$(echo $dport | sed 's/-/:/')" - [ -z "$proto" ] && return - if [ "$intf" = "all" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass --protocol $proto --destination-port $dport -j MARK --set-mark 0x539 - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-local --protocol $proto --destination-port $dport -j MARK --set-mark 0x539 - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 --protocol $proto --destination-port $dport -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - else - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass --protocol $proto --destination-port $dport -j MARK --set-mark 0x539$intfid - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-local --protocol $proto --destination-port $dport -j MARK --set-mark 0x539$intfid - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 --protocol $proto --destination-port $dport -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi - fi -} - -_bypass_src_port() { - local intf - local enabled - local sport - local proto - config_get sport $1 sport - config_get proto $1 proto - config_get intf $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$sport" ] && return - sport="$(echo $sport | sed 's/-/:/')" - [ -z "$proto" ] && return - if [ "$intf" = "all" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass --protocol $proto --source-port $sport -j MARK --set-mark 0x539 - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-local --protocol $proto --source-port $sport -j MARK --set-mark 0x539 - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 --protocol $proto --source-port $sport -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - else - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass --protocol $proto --source-port $sport -j MARK --set-mark 0x539$intfid - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-local --protocol $proto --source-port $sport -j MARK --set-mark 0x539$intfid - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 --protocol $proto --source-port $sport -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi - fi -} - -_bypass_proto() { - local proto - local intf - local enabled - config_get proto $1 proto - config_get intf $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$proto" ] && return - if [ "$intf" = "all" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-dpi -m ndpi --proto $proto -j MARK --set-mark 0x539 - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6-dpi -m ndpi --proto $proto -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - else - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-dpi -m ndpi --proto $proto -j MARK --set-mark 0x539$intfid - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6-dpi -m ndpi --proto $proto -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi - fi - # Use dnsmasq ipset to bypass domains of the proto - local domains - domains="$(cat /proc/net/xt_ndpi/host_proto | grep -i $proto: | sed -e "s/$proto://i" -e 's/*//' -e 's/,/ /g')" - if [ -n "$domains" ]; then - tlds=`curl --max-time 4 -s -k https://data.iana.org/TLD/tlds-alpha-by-domain.txt` - for domain in $domains; do - if [ -n "$domain" ]; then - domain="$(echo $domain | sed 's/^\.//')" - if [ "$(echo $domain | grep '\.$')" != "" ]; then - domainlist="" - # construct list of domains to query - for tld in $tlds; do - i=$((i+1)) - # trim off header - if [ "$i" -lt "12" ] || [ "$i" -gt "50" ]; then - continue - fi - # add to command - domainlist="${domainlist} ${domain}${tld}" - done - domainlist="$(echo $domainlist `# Get the list of valid domains, pass it to awk` \ - | awk '{print tolower($0)}' `# awk lowercases the whole string and passes it to ` \ - | xargs -n8 -P12 `# xargs sends 8 arguments at a time to` \ - dig a +timeout=1 +tries=1 +retry=1 +nocmd +noall +answer `# dig, which passes results (if any) to` \ - | awk '{print $1}' `# awk, which outputs queried domain to` \ - | sed -e 's/.$//' `# sed, which trims off the trailing dot (google.com. -> google.com)` to \ - | grep $domain `# grep, only keep wanted domain` \ - | awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}')" # deduplicate - for validdomain in $domainlist; do - _bypass_domain $validdomain $intf - done - else - _bypass_domain $domain $intf - fi - fi - done - fi -} - -_intf_rule_ss_rules() { - rule_name=$1 - [ "$rule_name" = "ss_rules" ] && rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep ssr | grep omr_dst_bypass_$intf)" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *nat - -I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I ssr_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN - -I ssr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I ssr_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN - -I ssr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I ssr_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN - COMMIT - EOF - fi - if [ "$disableipv6" = "0" ]; then - if [ "$(ip6tables --wait=40 -t mangle -L -n | grep omr6_dst_bypass_$intf)" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - COMMIT - EOF - fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6 | grep omr6_dst_bypass_$intf)" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *nat - -I ssr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - -I ssr6_${rule_name}_dst 2 -m mark --mark 0x6539$count -j RETURN - -I ssr6_${rule_name}_local_out 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - -I ssr6_${rule_name}_local_out 2 -m mark --mark 0x6539$count -j RETURN - -I ssr6_${rule_name}_pre_src 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - -I ssr6_${rule_name}_pre_src 2 -m mark --mark 0x6539$count -j RETURN - COMMIT - EOF - fi - fi -} - -_intf_rule_v2ray_rules() { - #rule_name=$1 - #[ "$rule_name" = "ss_rules" ] && rule_name="def" - rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep v2r | grep omr_dst_bypass_$intf)" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *nat - -I v2r_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I v2r_${rule_name}_dst 2 -m mark --mark 0x539$count -j RETURN - -I v2r_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I v2r_${rule_name}_local_out 2 -m mark --mark 0x539$count -j RETURN - -I v2r_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I v2r_${rule_name}_pre_src 2 -m mark --mark 0x539$count -j RETURN - COMMIT - EOF - fi - if [ "$disableipv6" = "0" ]; then - if [ "$(ip6tables --wait=40 -t mangle -L -n | grep omr6_dst_bypass_$intf)" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - COMMIT - EOF - fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6 | grep omr6_dst_bypass_$intf)" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *nat - -I v2r6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - -I v2r6_${rule_name}_dst 2 -m mark --mark 0x6539$count -j RETURN - -I v2r6_${rule_name}_local_out 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - -I v2r6_${rule_name}_local_out 2 -m mark --mark 0x6539$count -j RETURN - -I v2r6_${rule_name}_pre_src 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - -I v2r6_${rule_name}_pre_src 2 -m mark --mark 0x6539$count -j RETURN - COMMIT - EOF - fi - fi -} - -_intf_rule() { - local intf - config_get intf $1 ifname - [ -z "$intf" ] && intf=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') - #count=$((count+1)) - config_get count $1 metric - local mode - #config_get mode $1 multipath "off" - #[ "$mode" = "off" ] && return - [ -z "$count" ] && return - [ -z "$intf" ] && return - [ "$(echo $1 | grep _dev)" != "" ] && return - [ -z "$RELOAD" ] || [ "$(ipset --list | grep omr_dst_bypass_$intf)" = "" ] && { - unset RELOAD - ipset -q flush omr_dst_bypass_$intf > /dev/null 2>&1 - ipset -q flush omr6_dst_bypass_$intf > /dev/null 2>&1 - ipset -q --exist restore <<-EOF - create omr_dst_bypass_$intf hash:net hashsize 64 - create omr6_dst_bypass_$intf hash:net family inet6 hashsize 64 - EOF - if [ "$(uci -q get openmptcprouter.settings.uci_rules)" = "1" ]; then - uci -q batch <<-EOF >/dev/null - delete network.${1}_fw_rule=rule - set network.${1}_fw_rule=rule - set network.${1}_fw_rule.priority=1 - set network.${1}_fw_rule.mark=0x539${count} - set network.${1}_fw_rule.lookup=${count} - delete network.${1}_fw_rule6=rule6 - set network.${1}_fw_rule6=rule6 - set network.${1}_fw_rule6.priority=1 - set network.${1}_fw_rule6.mark=0x6539${count} - set network.${1}_fw_rule6.lookup=${count} - commit network - EOF - else - ip rule add prio 1 fwmark 0x539$count lookup $count pref 1 > /dev/null 2>&1 - ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1 - fi - } - if [ "$(iptables --wait=40 -t mangle -L -n | grep omr_dst_bypass_$intf)" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - COMMIT - EOF - fi - config_load shadowsocks-libev - config_foreach _intf_rule_ss_rules ss_rules - _intf_rule_v2ray_rules - - uci -q set omr-bypass.$intf=interface - uci -q set omr-bypass.$intf.id=$count -} - -_bypass_ip_set() { - local ip - local interface - local enabled - config_get ip $1 ip - config_get interface $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - _bypass_ip $ip $interface -} - -_bypass_asn() { - local asn - local interface - local enabled - config_get asn $1 asn - config_get interface $1 interface - config_get enabled $1 enabled - [ "$enabled" = "0" ] && return - local asnips - asnips=`curl --max-time 4 -s -k https://stat.ripe.net/data/announced-prefixes/data.json?resource=${asn} | jsonfilter -q -e '@.data.prefixes.*.prefix'` - for ip in $asnips; do - _bypass_ip $ip $interface - done - -} - -bypass_asn() { - config_load omr-bypass - config_foreach _bypass_asn asns -} - -_bypass_omr_server() { - local ip - config_get ip $1 ip - _bypass_ip $ip -} - - -_ss_rules_config() { - rule_name=$1 - [ "$rule_name" = "ss_rules" ] && rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep ssr_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep omr_dst_bypass_all)" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *nat - -I ssr_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - -I ssr_${rule_name}_dst 1 -m mark --mark 0x539 -j RETURN - -I ssr_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - -I ssr_${rule_name}_local_out 2 -m mark --mark 0x539 -j RETURN - -I ssr_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - -I ssr_${rule_name}_pre_src 2 -m mark --mark 0x539 -j RETURN - COMMIT - EOF - fi - if [ "$disableipv6" = "0" ]; then - if [ "$(ip6tables --wait=40 -t mangle -L -n | grep 'match-set omr6_dst_bypass_all dst MARK set')" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep ssr6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep omr6_dst_bypass_all)" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *nat - -I ssr6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - -I ssr6_${rule_name}_dst 1 -m mark --mark 0x6539 -j RETURN - -I ssr6_${rule_name}_local_out 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - -I ssr6_${rule_name}_local_out 2 -m mark --mark 0x6539 -j RETURN - -I ssr6_${rule_name}_pre_src 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - -I ssr6_${rule_name}_pre_src 2 -m mark --mark 0x6539 -j RETURN - COMMIT - EOF - fi - fi -} - -_v2ray_rules_config() { - #rule_name=$1 - #[ "$rule_name" = "ss_rules" ] && rule_name="def" - rule_name="def" - if [ "$(iptables --wait=40 -t nat -L -n | grep v2r_${rule_name}_pre_src)" != "" ] && [ "$(iptables --wait=40 -t nat -L -n | grep omr_dst_bypass_all)" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *nat - -I v2r_${rule_name}_dst 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - -I v2r_${rule_name}_dst 1 -m mark --mark 0x539 -j RETURN - -I v2r_${rule_name}_local_out 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - -I v2r_${rule_name}_local_out 2 -m mark --mark 0x539 -j RETURN - -I v2r_${rule_name}_pre_src 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - -I v2r_${rule_name}_pre_src 2 -m mark --mark 0x539 -j RETURN - COMMIT - EOF - fi - if [ "$disableipv6" = "0" ]; then - if [ "$(ip6tables --wait=40 -t mangle -L -n | grep 'match-set omr6_dst_bypass_all dst MARK set')" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - if [ "$(ip6tables --wait=40 -t nat -L -n | grep v2r6_${rule_name}_pre_src)" != "" ] && [ "$(ip6tables --wait=40 -t nat -L -n | grep omr6_dst_bypass_all)" = "" ]; then - ip6tables-restore -w --wait=60 --noflush <<-EOF - *nat - -I v2r6_${rule_name}_dst 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - -I v2r6_${rule_name}_dst 1 -m mark --mark 0x6539 -j RETURN - -I v2r6_${rule_name}_local_out 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - -I v2r6_${rule_name}_local_out 2 -m mark --mark 0x6539 -j RETURN - -I v2r6_${rule_name}_pre_src 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - -I v2r6_${rule_name}_pre_src 2 -m mark --mark 0x6539 -j RETURN - COMMIT - EOF - fi - fi -} - -boot() { - BOOT=1 - start "$@" -} - -start_service() { - #local count - logger -t "omr-bypass" "Starting OMR-ByPass..." - config_load omr-bypass - config_foreach _add_proto proto - disableipv6="$(uci -q get openmptcprouter.settings.disable_ipv6)" - - [ -n "$RELOAD" ] && [ "$(ipset --list | grep omr_dst_bypass_all)" = "" ] && { - unset RELOAD - } - [ -z "$RELOAD" ] && { - ipset -q flush omr_dst_bypass_all > /dev/null 2>&1 - ipset -q flush omr6_dst_bypass_all > /dev/null 2>&1 - ipset -q --exist restore <<-EOF - create omr_dst_bypass_all hash:net hashsize 64 - create omr6_dst_bypass_all hash:net family inet6 hashsize 64 - EOF - } - iptables-save --counters | grep -v omr-bypass | iptables-restore -w --counters - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - :omr-bypass - - -I PREROUTING -m addrtype ! --dst-type LOCAL -j omr-bypass - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - :omr-bypass-local - - -I OUTPUT -m addrtype ! --dst-type LOCAL -j omr-bypass-local - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-save --counters | grep -v omr-bypass6 | ip6tables-restore -w --counters - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - :omr-bypass6 - - -I PREROUTING -m addrtype ! --dst-type LOCAL -j omr-bypass6 - COMMIT - EOF - fi - - config_load network - config_foreach _intf_rule interface - local ndpi_rules="" - if [ "$(uci -q get openmptcprouter.settings.bypass_servers)" = "1" ]; then - config_load openmptcprouter - config_foreach _bypass_omr_server server - fi - config_load omr-bypass - config_foreach _bypass_ip_set ips - config_foreach _bypass_mac macs - config_foreach _bypass_lan_ip lan_ip - config_foreach _bypass_dest_port dest_port - config_foreach _bypass_src_port src_port - config_foreach _bypass_asn asns - dnsmasqipset=$(uci -q get dhcp.@dnsmasq[0].ipset | sed 's/ /\n/g' | grep -v dst_bypass) - uci -q delete dhcp.@dnsmasq[0].ipset - if [ -n "$dnsmasqipset" ]; then - for dnsipset in $dnsmasqipset; do - ipsets="" - allipsets=$(echo $dnsipset | cut -d/ -f3 | sed 's/,/\n/g') - for ipset in $allipsets; do - [ "$(echo $ipset | grep -v dst_bypass)" != "" ] && { - [ "$ipsets" != "" ] && ipsets="$ipsets,$ipset" - [ "$ipsets" = "" ] && ipsets="$ipset" - } - done - if [ "$ipsets" != "" ]; then - resultipset="/$(echo $dnsipset | cut -d/ -f2)/$ipsets" - uci -q add_list dhcp.@dnsmasq[0].ipset=$resultipset - fi - done - fi - config_foreach _bypass_domains domains - uci -q commit dhcp - - ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1 - ip -6 rule add prio 1 fwmark 0x6539 lookup 6991337 > /dev/null 2>&1 - - if [ "$(iptables --wait=40 -t mangle -L -n | grep 'match-set omr_dst_bypass_all dst MARK set')" = "" ]; then - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - COMMIT - EOF - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-local -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - COMMIT - EOF - fi - - config_load shadowsocks-libev - config_foreach _ss_rules_config - _v2ray_rules_config - - iptables-save --counters | grep -v omr-bypass-dpi | iptables-restore -w --counters - iptables-restore -w --wait=60 --noflush <<-EOF - *mangle - :omr-bypass-dpi - - -A PREROUTING -m addrtype ! --dst-type LOCAL -j omr-bypass-dpi - -A OUTPUT -m addrtype ! --dst-type LOCAL -j omr-bypass-dpi - -A POSTROUTING -m addrtype --dst-type LOCAL -j omr-bypass-dpi - COMMIT - EOF - if [ "$disableipv6" = "0" ]; then - ip6tables-save --counters | grep -v omr-bypass6-dpi | ip6tables-restore -w --counters - ip6tables-restore -w --wait=60 --noflush <<-EOF - *mangle - :omr-bypass6-dpi - - -A PREROUTING -m addrtype ! --dst-type LOCAL -j omr-bypass6-dpi - -A OUTPUT -m addrtype ! --dst-type LOCAL -j omr-bypass6-dpi - -A POSTROUTING -m addrtype --dst-type LOCAL -j omr-bypass6-dpi - COMMIT - EOF - fi - config_load omr-bypass - config_foreach _bypass_proto dpis - uci -q commit omr-bypass - - [ -z "$RELOAD" ] && { - logger -t "omr-bypass" "Restart dnsmasq..." - /etc/init.d/dnsmasq restart - } - [ -n "$RELOAD" ] && { - logger -t "omr-bypass" "Reload dnsmasq..." - /etc/init.d/dnsmasq reload - } - logger -t "omr-bypass" "OMR-ByPass is running" -} - -stop_service() { - iptables-save --counters | grep -v omr-bypass | iptables-restore -w --counters - iptables-save --counters | grep -v omr_dst | iptables-restore -w --counters - ip6tables-save --counters | grep -v omr-bypass6 | ip6tables-restore -w --counters - ip6tables-save --counters | grep -v omr6_dst | ip6tables-restore -w --counters - for setname in $(ipset -n list | grep "omr_"); do - ipset -q destroy "$setname" 2>/dev/null || true - done -} - -service_triggers() { - PROCD_RELOAD_DELAY=1000 - procd_add_reload_trigger omr-bypass network -} - -reload_service() { - start -} - -reload_rules() { - [ "$( ipset -n list | grep omr_ )" = "" ] && return 0 - RELOAD=1 - start -} diff --git a/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json b/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json index 3281f4fca..0c8727a42 100644 --- a/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json +++ b/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json @@ -4,7 +4,8 @@ "read": { "file": { "/proc/net/xt_ndpi/proto": [ "read" ], - "/proc/net/xt_ndpi/host_proto": [ "read" ] + "/proc/net/xt_ndpi/host_proto": [ "read" ], + "/usr/share/omr-bypass/omr-bypass-proto.lst": [ "read" ] }, "ubus": { "luci-rpc": [ "getHostHints" ] diff --git a/luci-app-omr-dscp/Makefile b/luci-app-omr-dscp/Makefile index 152e91cf0..b099678d6 100644 --- a/luci-app-omr-dscp/Makefile +++ b/luci-app-omr-dscp/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Interface to DSCP - +LUCI_DEPENDS:=+LINUX_5_4:omr-dscp +!LINUX_5_4:omr-dscp-nft PKG_LICENSE:=GPLv3 #include ../luci/luci.mk diff --git a/luci-app-omr-dscp/po/de/omr-dscp.po b/luci-app-omr-dscp/po/de/omr-dscp.po index 9efa17a88..be6e36aa2 100644 --- a/luci-app-omr-dscp/po/de/omr-dscp.po +++ b/luci-app-omr-dscp/po/de/omr-dscp.po @@ -11,56 +11,59 @@ msgstr "" "X-Generator: Weblate 4.0.4\n" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 msgid "CS0 - Normal/Best Effort" msgstr "CS0 - normal/best effort" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 msgid "CS1 - Low priority" msgstr "CS - Niedrige Priorität" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 msgid "CS2 - High priority" msgstr "CS2 - Hohe Priorität" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 msgid "CS3 - SIP" msgstr "CS3 - SIP/VoIP" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 -msgid "CS4 - Streaming video" -msgstr "CS4 - Video-Streaming" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 -msgid "CS5" -msgstr "CS5" +msgid "CS5 - Broadcast video" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 msgid "CS6 - Network routing" msgstr "CS6 - Netzwerk-Transportschicht" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 -msgid "CS7" -msgstr "CS7" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 msgid "Class" msgstr "Klasse" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 msgid "Classification Rules" msgstr "Klassifizierungs-Regeln" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 msgid "Comment" msgstr "Kommentar" @@ -76,19 +79,19 @@ msgstr "DSCP-Domains" msgid "DSCP by domain" msgstr "DSCP pro Domain" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 msgid "Destination host" msgstr "Ziel-Hostsystem" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 msgid "Destination ports" msgstr "Ziel-Port" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 msgid "Differentiated services" msgstr "Differenzierte Dienste" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 msgid "Direction" msgstr "Richtung" @@ -100,7 +103,7 @@ msgstr "Domain" msgid "Domains" msgstr "Domains" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 msgid "EF - Voice" msgstr "EF - Sprachübertragung" @@ -108,11 +111,16 @@ msgstr "EF - Sprachübertragung" msgid "EF Voice" msgstr "EF Sprachübertragung" +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + #: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 msgid "OMR-DSCP" msgstr "OMR-DSCP" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 msgid "Protocol" msgstr "Protokoll" @@ -120,15 +128,15 @@ msgstr "Protokoll" msgid "Set DSCP by domains." msgstr "DSCP domainspezifizisch einstellen" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 msgid "Source host" msgstr "Quell-Hostsystem" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 msgid "Source ports" msgstr "Quell-Ports" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 msgid "" "Traffic may be classified by many different parameters, such as source " "address, destination address or traffic type and assigned to a specific " @@ -138,21 +146,30 @@ msgstr "" "nach Quell- oder Zieladresse, nach Daten-Typ oder speziell zugeordneter " "Verkehrsklasse." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 msgid "all" msgstr "alle" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 msgid "both" msgstr "beide" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 msgid "download" msgstr "Downstream" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 msgid "upload" msgstr "Upstream" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Video-Streaming" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/de/omr-dscp.po~ b/luci-app-omr-dscp/po/de/omr-dscp.po~ new file mode 100644 index 000000000..9efa17a88 --- /dev/null +++ b/luci-app-omr-dscp/po/de/omr-dscp.po~ @@ -0,0 +1,158 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - normal/best effort" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS - Niedrige Priorität" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Hohe Priorität" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP/VoIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Video-Streaming" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Netzwerk-Transportschicht" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Klasse" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Klassifizierungs-Regeln" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Kommentar" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP-Domains" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP pro Domain" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Ziel-Hostsystem" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Ziel-Port" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Differenzierte Dienste" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "Richtung" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domain" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domains" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Sprachübertragung" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF Sprachübertragung" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protokoll" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "DSCP domainspezifizisch einstellen" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Quell-Hostsystem" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Quell-Ports" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Nutzdaten können nach verschiedenen Kriterien klassifiziert werden. Z.B. " +"nach Quell- oder Zieladresse, nach Daten-Typ oder speziell zugeordneter " +"Verkehrsklasse." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "alle" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "beide" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Downstream" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Upstream" diff --git a/luci-app-omr-dscp/po/fr/omr-dscp.po b/luci-app-omr-dscp/po/fr/omr-dscp.po index 687db4c1c..a7389d8f3 100644 --- a/luci-app-omr-dscp/po/fr/omr-dscp.po +++ b/luci-app-omr-dscp/po/fr/omr-dscp.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-08-03 12:39+0000\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -11,59 +11,62 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 msgid "CS0 - Normal/Best Effort" msgstr "CS0 - Effort normal / optimal" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 msgid "CS1 - Low priority" msgstr "CS1 - Faible priorité" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 msgid "CS2 - High priority" msgstr "CS2 - Haute priorité" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 msgid "CS3 - SIP" msgstr "CS3 - SIP" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 -msgid "CS4 - Streaming video" -msgstr "CS4 - Vidéo en streaming" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "CS4 - Temps réel interactif" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "CS5 - Diffusion vidéo" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 -msgid "CS5" -msgstr "CS5" +msgid "CS5 - Broadcast video" +msgstr "CS5 - Diffusion vidéo" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 msgid "CS6 - Network routing" msgstr "CS6 - Routage réseau" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 -msgid "CS7" -msgstr "CS7" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "CS7 - Sensible à la latence" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 msgid "Class" msgstr "Classe" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 msgid "Classification Rules" msgstr "Règles de classification" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 msgid "Comment" msgstr "Commentaire" @@ -79,19 +82,19 @@ msgstr "DSCP Domaines" msgid "DSCP by domain" msgstr "DSCP par domaine" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 msgid "Destination host" msgstr "Hôte de destination" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 msgid "Destination ports" msgstr "Ports de destination" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 msgid "Differentiated services" -msgstr "" +msgstr "Services différenciés" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 msgid "Direction" msgstr "Direction" @@ -103,7 +106,7 @@ msgstr "Domaine" msgid "Domains" msgstr "Domaines" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 msgid "EF - Voice" msgstr "EF - Voix" @@ -111,11 +114,16 @@ msgstr "EF - Voix" msgid "EF Voice" msgstr "EF - Voix" +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "Permettre l'accès pour luci-app-dscp" + #: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 msgid "OMR-DSCP" msgstr "OMR-DSCP" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 msgid "Protocol" msgstr "Protocole" @@ -123,15 +131,15 @@ msgstr "Protocole" msgid "Set DSCP by domains." msgstr "Configurer DSCP par domaine" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 msgid "Source host" msgstr "Hôte source" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 msgid "Source ports" msgstr "Ports source" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 msgid "" "Traffic may be classified by many different parameters, such as source " "address, destination address or traffic type and assigned to a specific " @@ -141,21 +149,30 @@ msgstr "" "l'adresse source, l'adresse de destination ou le type de trafic et attribué " "à une classe de trafic spécifique." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 msgid "all" msgstr "Tous" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 msgid "both" msgstr "Les deux" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 msgid "download" msgstr "Téléchargement" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 msgid "upload" msgstr "Envoie" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Vidéo en streaming" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/fr/omr-dscp.po~ b/luci-app-omr-dscp/po/fr/omr-dscp.po~ new file mode 100644 index 000000000..96fc1bf68 --- /dev/null +++ b/luci-app-omr-dscp/po/fr/omr-dscp.po~ @@ -0,0 +1,161 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2021-03-31 15:07+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Effort normal / optimal" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - Faible priorité" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Haute priorité" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Vidéo en streaming" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Routage réseau" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Classe" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Règles de classification" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Commentaire" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP Domaines" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP par domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Hôte de destination" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Ports de destination" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Services différenciés" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "Direction" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domaines" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Voix" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Voix" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protocole" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Configurer DSCP par domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Hôte source" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Ports source" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Le trafic peut être classé selon de nombreux paramètres différents, tels que " +"l'adresse source, l'adresse de destination ou le type de trafic et attribué " +"à une classe de trafic spécifique." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "Tous" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "Les deux" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Téléchargement" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Envoie" diff --git a/luci-app-omr-dscp/po/it/omr-dscp.po b/luci-app-omr-dscp/po/it/omr-dscp.po index f6a098de2..2ea86eaf8 100644 --- a/luci-app-omr-dscp/po/it/omr-dscp.po +++ b/luci-app-omr-dscp/po/it/omr-dscp.po @@ -1,66 +1,69 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-09-21 12:51+0000\n" -"Last-Translator: Weblate Admin \n" +"PO-Revision-Date: 2022-02-21 21:14+0000\n" +"Last-Translator: Deleted User \n" "Language-Team: Italian \n" "Language: it\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.10.1\n" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 msgid "CS0 - Normal/Best Effort" msgstr "CS0 - Normale / Miglior sforzo" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 msgid "CS1 - Low priority" msgstr "CS1 - Priorità bassa" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 msgid "CS2 - High priority" msgstr "CS2 - Alta priorità" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 msgid "CS3 - SIP" msgstr "CS3 - SIP" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 -msgid "CS4 - Streaming video" -msgstr "CS4 - Streaming video" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 -msgid "CS5" -msgstr "CS5" +msgid "CS5 - Broadcast video" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 msgid "CS6 - Network routing" msgstr "CS6 - Routing di rete" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 -msgid "CS7" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 msgid "Class" msgstr "Classe" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 msgid "Classification Rules" msgstr "Regole di classificazione" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 msgid "Comment" msgstr "Commenti" @@ -76,21 +79,21 @@ msgstr "Domini DSCP" msgid "DSCP by domain" msgstr "DSCP per dominio" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 msgid "Destination host" msgstr "Host di destinazione" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 msgid "Destination ports" msgstr "Porte di destinazione" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 msgid "Differentiated services" msgstr "Servizi differenziati" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 msgid "Direction" -msgstr "" +msgstr "Direzione" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 msgid "Domain" @@ -100,7 +103,7 @@ msgstr "Dominio" msgid "Domains" msgstr "Domini" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 msgid "EF - Voice" msgstr "EF - Voce" @@ -108,11 +111,16 @@ msgstr "EF - Voce" msgid "EF Voice" msgstr "EF - Voce" +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + #: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 msgid "OMR-DSCP" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 msgid "Protocol" msgstr "Protocollo" @@ -120,15 +128,15 @@ msgstr "Protocollo" msgid "Set DSCP by domains." msgstr "Imposta DSCP per domini." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 msgid "Source host" msgstr "Host di origine" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 msgid "Source ports" msgstr "Porte di origine" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 msgid "" "Traffic may be classified by many different parameters, such as source " "address, destination address or traffic type and assigned to a specific " @@ -138,21 +146,27 @@ msgstr "" "indirizzo di origine, indirizzo di destinazione o tipo di traffico e " "assegnato a una classe di traffico specifica." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 msgid "all" msgstr "tutti" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 msgid "both" msgstr "entrambi" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 msgid "download" msgstr "Scarica" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 msgid "upload" msgstr "Carica" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Streaming video" + +#~ msgid "CS5" +#~ msgstr "CS5" diff --git a/luci-app-omr-dscp/po/it/omr-dscp.po~ b/luci-app-omr-dscp/po/it/omr-dscp.po~ new file mode 100644 index 000000000..f6a098de2 --- /dev/null +++ b/luci-app-omr-dscp/po/it/omr-dscp.po~ @@ -0,0 +1,158 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Normale / Miglior sforzo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - Priorità bassa" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Alta priorità" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Streaming video" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Routing di rete" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Classe" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Regole di classificazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Commenti" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "Domini DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP per dominio" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Host di destinazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Porte di destinazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Servizi differenziati" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Dominio" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domini" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Voce" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Voce" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protocollo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Imposta DSCP per domini." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Host di origine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Porte di origine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Il traffico può essere classificato in base a molti parametri diversi, come " +"indirizzo di origine, indirizzo di destinazione o tipo di traffico e " +"assegnato a una classe di traffico specifica." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "tutti" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "entrambi" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Scarica" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Carica" diff --git a/luci-app-omr-dscp/po/oc/omr-dscp.po b/luci-app-omr-dscp/po/oc/omr-dscp.po index afa7ea69d..c585dd98a 100644 --- a/luci-app-omr-dscp/po/oc/omr-dscp.po +++ b/luci-app-omr-dscp/po/oc/omr-dscp.po @@ -11,56 +11,59 @@ msgstr "" "X-Generator: Weblate 4.0.4\n" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 msgid "CS0 - Normal/Best Effort" msgstr "CS0 - Esfòrç normal / optimal" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 msgid "CS1 - Low priority" msgstr "CS1 - Prioritat febla" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 msgid "CS2 - High priority" msgstr "CS2 - Prioritat nauta" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 msgid "CS3 - SIP" msgstr "CS3 - SIP" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 -msgid "CS4 - Streaming video" -msgstr "CS4 - Difusion vidèo" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 -msgid "CS5" -msgstr "CS5" +msgid "CS5 - Broadcast video" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 msgid "CS6 - Network routing" msgstr "CS6 - Partiment ret" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 -msgid "CS7" -msgstr "CS7" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 msgid "Class" msgstr "Classa" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 msgid "Classification Rules" msgstr "Règlas de classificacion" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 msgid "Comment" msgstr "Comentari" @@ -76,19 +79,19 @@ msgstr "DSCP Domenis" msgid "DSCP by domain" msgstr "DSCP per domeni" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 msgid "Destination host" msgstr "Òste de destinacion" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 msgid "Destination ports" msgstr "Pòrts de destinacion" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 msgid "Differentiated services" msgstr "Servicis diferenciats" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 msgid "Direction" msgstr "Direccion" @@ -100,7 +103,7 @@ msgstr "Domeni" msgid "Domains" msgstr "Domenis" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 msgid "EF - Voice" msgstr "EF - Votz" @@ -108,11 +111,16 @@ msgstr "EF - Votz" msgid "EF Voice" msgstr "EF - Votz" +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + #: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 msgid "OMR-DSCP" msgstr "OMR-DSCP" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 msgid "Protocol" msgstr "Protocòl" @@ -120,39 +128,48 @@ msgstr "Protocòl" msgid "Set DSCP by domains." msgstr "Configurar DSCP per domeni." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 msgid "Source host" msgstr "Òste font" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 msgid "Source ports" msgstr "Pòrts fonts" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 msgid "" "Traffic may be classified by many different parameters, such as source " "address, destination address or traffic type and assigned to a specific " "traffic class." msgstr "" -"Lo trafic pòt èsser classat segon mantuns paramètres diferents, coma l’" -"adreça font, l’adreça de destinacion o lo tipe de trafic e atribuit a una " +"Lo trafic pòt èsser classat segon mantuns paramètres diferents, coma " +"l’adreça font, l’adreça de destinacion o lo tipe de trafic e atribuit a una " "classa de trafic especifica." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 msgid "all" msgstr "totes" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 msgid "both" msgstr "Los dos" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 msgid "download" msgstr "Telecargament" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 msgid "upload" msgstr "Mandadís" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Difusion vidèo" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/oc/omr-dscp.po~ b/luci-app-omr-dscp/po/oc/omr-dscp.po~ new file mode 100644 index 000000000..ed3a33083 --- /dev/null +++ b/luci-app-omr-dscp/po/oc/omr-dscp.po~ @@ -0,0 +1,158 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-31 17:15+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Esfòrç normal / optimal" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - Prioritat febla" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Prioritat nauta" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Difusion vidèo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Partiment ret" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Classa" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Règlas de classificacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Comentari" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP Domenis" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP per domeni" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Òste de destinacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Pòrts de destinacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Servicis diferenciats" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "Direccion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domeni" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domenis" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Votz" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Votz" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protocòl" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Configurar DSCP per domeni." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Òste font" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Pòrts fonts" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Lo trafic pòt èsser classat segon mantuns paramètres diferents, coma " +"l’adreça font, l’adreça de destinacion o lo tipe de trafic e atribuit a una " +"classa de trafic especifica." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "totes" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "Los dos" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Telecargament" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Mandadís" diff --git a/luci-app-omr-dscp/po/templates/omr-dscp.pot b/luci-app-omr-dscp/po/templates/omr-dscp.pot index 91981b0ab..cc022398e 100644 --- a/luci-app-omr-dscp/po/templates/omr-dscp.pot +++ b/luci-app-omr-dscp/po/templates/omr-dscp.pot @@ -2,56 +2,59 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 msgid "CS0 - Normal/Best Effort" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 msgid "CS1 - Low priority" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 msgid "CS2 - High priority" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 msgid "CS3 - SIP" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 -msgid "CS4 - Streaming video" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 -msgid "CS5" +msgid "CS5 - Broadcast video" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 msgid "CS6 - Network routing" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 -msgid "CS7" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 msgid "Class" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 msgid "Classification Rules" msgstr "" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 msgid "Comment" msgstr "" @@ -67,19 +70,19 @@ msgstr "" msgid "DSCP by domain" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 msgid "Destination host" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 msgid "Destination ports" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 msgid "Differentiated services" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 msgid "Direction" msgstr "" @@ -91,7 +94,7 @@ msgstr "" msgid "Domains" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 msgid "EF - Voice" msgstr "" @@ -99,11 +102,16 @@ msgstr "" msgid "EF Voice" msgstr "" +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + #: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 msgid "OMR-DSCP" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 msgid "Protocol" msgstr "" @@ -111,36 +119,36 @@ msgstr "" msgid "Set DSCP by domains." msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 msgid "Source host" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 msgid "Source ports" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 msgid "" "Traffic may be classified by many different parameters, such as source " "address, destination address or traffic type and assigned to a specific " "traffic class." msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 msgid "all" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 msgid "both" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 msgid "download" msgstr "" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 msgid "upload" msgstr "" diff --git a/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po index 8c62da0ca..cecea8c87 100644 --- a/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po +++ b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po @@ -1,66 +1,69 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-06-11 16:36+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 msgid "CS0 - Normal/Best Effort" msgstr "CS0 - 正常/尽量" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 msgid "CS1 - Low priority" msgstr "CS1 - 低优先级" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 msgid "CS2 - High priority" msgstr "CS2 - 高优先级" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 msgid "CS3 - SIP" msgstr "CS3 - SIP" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 -msgid "CS4 - Streaming video" -msgstr "CS4 - 视频流" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "CS4 - 实时交互" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "CS5 - 视频广播" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 -msgid "CS5" -msgstr "CS5" +msgid "CS5 - Broadcast video" +msgstr "CS5 - 视频广播" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 msgid "CS6 - Network routing" msgstr "CS6-网络路由" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 -msgid "CS7" -msgstr "CS7" +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "CS7 - 时延敏感" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 msgid "Class" msgstr "类" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 msgid "Classification Rules" msgstr "分类规则" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 msgid "Comment" msgstr "注释" @@ -76,31 +79,31 @@ msgstr "DSCP域" msgid "DSCP by domain" msgstr "DSCP按域名" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 msgid "Destination host" msgstr "目标主机" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 msgid "Destination ports" msgstr "目的端口" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 msgid "Differentiated services" msgstr "差异化服务" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 msgid "Direction" msgstr "目的" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 msgid "Domain" -msgstr "域名" +msgstr "域" #: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 msgid "Domains" -msgstr "域" +msgstr "域名" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 msgid "EF - Voice" msgstr "EF-语音" @@ -108,11 +111,16 @@ msgstr "EF-语音" msgid "EF Voice" msgstr "EF 语音" +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "授予luci-app-dscp UCI访问权限" + #: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 msgid "OMR-DSCP" msgstr "OMR-DSCP" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 msgid "Protocol" msgstr "协议" @@ -120,36 +128,47 @@ msgstr "协议" msgid "Set DSCP by domains." msgstr "按域设置DSCP." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 msgid "Source host" msgstr "源主机" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 msgid "Source ports" msgstr "源端口" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 msgid "" "Traffic may be classified by many different parameters, such as source " "address, destination address or traffic type and assigned to a specific " "traffic class." -msgstr "可以通过许多不同的参数(例如源地址,目标地址或流量类型)对流量进行分类,并将其分配给特定的流量类别." +msgstr "" +"可以通过许多不同的参数(例如源地址,目标地址或流量类型)对流量进行分类,并将" +"其分配给特定的流量类别." -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 msgid "all" msgstr "所有" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 msgid "both" msgstr "都" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 msgid "download" msgstr "下载" -#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 msgid "upload" msgstr "上传" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - 视频流" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po~ b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po~ new file mode 100644 index 000000000..0a2da9832 --- /dev/null +++ b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po~ @@ -0,0 +1,157 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-06-11 16:36+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - 正常/尽量" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - 低优先级" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - 高优先级" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - 视频流" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6-网络路由" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "类" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "分类规则" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "注释" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP域" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP按域名" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "目标主机" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "目的端口" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "差异化服务" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "目的" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "域名" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "域" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF-语音" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF 语音" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "协议" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "按域设置DSCP." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "源主机" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "源端口" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"可以通过许多不同的参数(例如源地址,目标地址或流量类型)对流量进行分类,并将" +"其分配给特定的流量类别." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "所有" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "都" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "下载" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "上传" diff --git a/luci-app-omr-quota/po/de/omr-quota.po b/luci-app-omr-quota/po/de/omr-quota.po index 0c553322d..842f61f5e 100644 --- a/luci-app-omr-quota/po/de/omr-quota.po +++ b/luci-app-omr-quota/po/de/omr-quota.po @@ -18,6 +18,10 @@ msgstr "Hinzufügen" msgid "Enable" msgstr "Aktivieren" +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" msgstr "Anschlüsse" @@ -35,6 +39,7 @@ msgid "Monthly Quota" msgstr "Monatliches Maximalvolumen" #: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" msgstr "Quota" diff --git a/luci-app-omr-quota/po/de/omr-quota.po~ b/luci-app-omr-quota/po/de/omr-quota.po~ new file mode 100644 index 000000000..0c553322d --- /dev/null +++ b/luci-app-omr-quota/po/de/omr-quota.po~ @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Hinzufügen" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Aktivieren" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Anschlüsse" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Abstand zwischen den Überfprüfungen (in Sekunden)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Ungültig" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Monatliches Maximalvolumen" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "Quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "Empfangsvolumen-Grenze (in kBytes)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Das monatliche maximale Übertragungsvolumen bei dessen Erreichen der " +"Anschluss nicht weiter genutzt wird." + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "Sendevolumen-Grenze (in kBytes)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "Gesamtvolumen-Grenze (Rx+Tx in kBytes)" diff --git a/luci-app-omr-quota/po/fr/omr-quota.po b/luci-app-omr-quota/po/fr/omr-quota.po index b3cc96433..e67782587 100644 --- a/luci-app-omr-quota/po/fr/omr-quota.po +++ b/luci-app-omr-quota/po/fr/omr-quota.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-09-30 08:50+0000\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 msgid "Add" @@ -21,6 +21,10 @@ msgstr "Ajouter" msgid "Enable" msgstr "Activer" +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "Permettre l'accès à luci-app-omr-quota" + #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" msgstr "Interfaces" @@ -38,24 +42,28 @@ msgid "Monthly Quota" msgstr "Quota mensuel" #: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" msgstr "Quota" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 msgid "RX quota (kbit)" -msgstr "" +msgstr "Quota de réception (RX en kbit)" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 msgid "Set monthly quota, when quota is reached interface state is set to down" -msgstr "Configurer le quota mensuel, quand le quota est atteint l'interface est désactivée" +msgstr "" +"Configurer le quota mensuel, quand le quota est atteint l'interface est " +"désactivée" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 msgid "TX quota (kbit)" -msgstr "" +msgstr "Quota de transmission (TX en kbit)" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 msgid "TX+RX quota (kbit)" -msgstr "" +msgstr "Quota de transmission+réception (TX+RX en kbit)" #~ msgid "Set quota, when quota is reached interface state is set to down" -#~ msgstr "Configurer le quota, quand le quota est atteint l'interface est désactivée" +#~ msgstr "" +#~ "Configurer le quota, quand le quota est atteint l'interface est désactivée" diff --git a/luci-app-omr-quota/po/fr/omr-quota.po~ b/luci-app-omr-quota/po/fr/omr-quota.po~ new file mode 100644 index 000000000..d61b27717 --- /dev/null +++ b/luci-app-omr-quota/po/fr/omr-quota.po~ @@ -0,0 +1,64 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajouter" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Activer" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfaces" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Intervalle entre les essais (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalide" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quota mensuel" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "Quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "Quota de réception (RX en kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Configurer le quota mensuel, quand le quota est atteint l'interface est " +"désactivée" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "Quota de transmission (TX en kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "Quota de transmission+réception (TX+RX en kbit)" + +#~ msgid "Set quota, when quota is reached interface state is set to down" +#~ msgstr "" +#~ "Configurer le quota, quand le quota est atteint l'interface est désactivée" diff --git a/luci-app-omr-quota/po/it/omr-quota.po b/luci-app-omr-quota/po/it/omr-quota.po index 41412af9e..be100e360 100644 --- a/luci-app-omr-quota/po/it/omr-quota.po +++ b/luci-app-omr-quota/po/it/omr-quota.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-09-21 12:51+0000\n" -"Last-Translator: Weblate Admin \n" +"PO-Revision-Date: 2022-02-20 20:24+0000\n" +"Last-Translator: tiziano \n" "Language-Team: Italian \n" "Language: it\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.10.1\n" #: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 msgid "Add" @@ -18,9 +18,13 @@ msgstr "Aggiungi" msgid "Enable" msgstr "Attivare" +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" -msgstr "Interfaccia" +msgstr "Interfacce" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 msgid "Interval between check (s)" @@ -35,6 +39,7 @@ msgid "Monthly Quota" msgstr "Quota mensile" #: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" msgstr "" diff --git a/luci-app-omr-quota/po/it/omr-quota.po~ b/luci-app-omr-quota/po/it/omr-quota.po~ new file mode 100644 index 000000000..41412af9e --- /dev/null +++ b/luci-app-omr-quota/po/it/omr-quota.po~ @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Aggiungi" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Attivare" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfaccia" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Intervallo tra i controlli (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Non valido" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quota mensile" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Imposta la quota mensile, quando viene raggiunta la quota, lo stato " +"dell'interfaccia è impostato su inattivo" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "" diff --git a/luci-app-omr-quota/po/oc/omr-quota.po b/luci-app-omr-quota/po/oc/omr-quota.po index 87f906d16..dc0cc96e4 100644 --- a/luci-app-omr-quota/po/oc/omr-quota.po +++ b/luci-app-omr-quota/po/oc/omr-quota.po @@ -18,6 +18,10 @@ msgstr "Ajustar" msgid "Enable" msgstr "Activat" +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" msgstr "Interfàcias" @@ -35,6 +39,7 @@ msgid "Monthly Quota" msgstr "Quòta mesadièra" #: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" msgstr "Quòta" diff --git a/luci-app-omr-quota/po/oc/omr-quota.po~ b/luci-app-omr-quota/po/oc/omr-quota.po~ new file mode 100644 index 000000000..87f906d16 --- /dev/null +++ b/luci-app-omr-quota/po/oc/omr-quota.po~ @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajustar" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Activat" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfàcias" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Interval entre las verificacions (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalid" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quòta mesadièra" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "Quòta" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "RX quòta (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Definir la quòta mesadièra, quand es atenguda l'interfàcia es desactivada" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "TX quòta (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "TX+RX quòta (kbit)" diff --git a/luci-app-omr-quota/po/ru/omr-quota.po b/luci-app-omr-quota/po/ru/omr-quota.po new file mode 100644 index 000000000..2d9591607 --- /dev/null +++ b/luci-app-omr-quota/po/ru/omr-quota.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Добавить" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Включено" + +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "Разрешить доступ к UCI для luci-app-omr-quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Интерфейсы" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Интервал между проверками (сек.)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Неправильный" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Месячная квота" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 +msgid "Quota" +msgstr "Квота" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "Ограничение на прием (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Установить ежемесячную квоту, при достижении квоты интерфейс отключается" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "Ограничение на отправку (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "Общее размер квоты (отправка и прием в kbit)" diff --git a/luci-app-omr-quota/po/templates/omr-quota.pot b/luci-app-omr-quota/po/templates/omr-quota.pot index 15235cd19..da48e9212 100644 --- a/luci-app-omr-quota/po/templates/omr-quota.pot +++ b/luci-app-omr-quota/po/templates/omr-quota.pot @@ -9,6 +9,10 @@ msgstr "" msgid "Enable" msgstr "" +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" msgstr "" @@ -26,6 +30,7 @@ msgid "Monthly Quota" msgstr "" #: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" msgstr "" diff --git a/luci-app-omr-quota/po/zh_Hans/omr-quota.po b/luci-app-omr-quota/po/zh_Hans/omr-quota.po index b896c0b3e..f3157f768 100644 --- a/luci-app-omr-quota/po/zh_Hans/omr-quota.po +++ b/luci-app-omr-quota/po/zh_Hans/omr-quota.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-06-11 16:36+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" #: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 msgid "Add" @@ -16,11 +16,15 @@ msgstr "添加" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 msgid "Enable" -msgstr "开启" +msgstr "启用" + +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "授予luci-app-omr-quota UCI访问权限" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" -msgstr "网卡" +msgstr "接口" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 msgid "Interval between check (s)" @@ -28,13 +32,14 @@ msgstr "两次检查间隔 (秒)" #: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 msgid "Invalid" -msgstr "无效" +msgstr "无效的" #: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 msgid "Monthly Quota" msgstr "每月配额" #: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" msgstr "配额" diff --git a/luci-app-omr-quota/po/zh_Hans/omr-quota.po~ b/luci-app-omr-quota/po/zh_Hans/omr-quota.po~ new file mode 100644 index 000000000..b896c0b3e --- /dev/null +++ b/luci-app-omr-quota/po/zh_Hans/omr-quota.po~ @@ -0,0 +1,55 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-06-11 16:36+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "添加" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "开启" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "网卡" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "两次检查间隔 (秒)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "无效" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "每月配额" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "配额" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "接收配额 (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "设置每月配额,达到配额后将接口状态设置为关闭" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "发送配额 (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "发送+接收配额 (kbit)" diff --git a/luci-app-omr-tracker/Makefile b/luci-app-omr-tracker/Makefile index 410d1994a..03bf7e30e 100644 --- a/luci-app-omr-tracker/Makefile +++ b/luci-app-omr-tracker/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) # # diff --git a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js new file mode 100644 index 000000000..2a0f428a3 --- /dev/null +++ b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js @@ -0,0 +1,305 @@ +'use strict'; +'require form'; +'require fs'; +'require view'; +'require uci'; + +var cfgtypes = ['defaults','interface']; + +return view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/usr/bin/httping'), {}), + L.resolveDefault(fs.stat('/usr/bin/dig'), {}), +// L.resolveDefault(fs.stat('/usr/bin/nping'), {}), +// L.resolveDefault(fs.stat('/usr/bin/arping'), {}), + uci.load('network') + ]); + }, + + render: function (stats) { + var m, s, o; + + m = new form.Map('omr-tracker', _('OMR-Tracker - Interfaces'), + _('Names must match the interface name found in /etc/config/network.') + '
' + + _('Names may contain characters A-Z, a-z, 0-9, _ and no spaces-')); + + //s = m.section(form.GridSection, 'defaults'); + s = m.section(form.GridSection); + s.addremove = true; + s.anonymous = false; + s.nodescriptions = true; + s.cfgsections = function() { + return this.map.data.sections(this.map.config) + .filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; }) + .map(function(s) { return s['.name']; }); + }; + + s.handleAdd = function(ev) { + this.sectiontype = 'interface'; + var promise = form.GridSection.prototype.handleAdd.apply(this, arguments); + this.sectiontype = undefined; + return promise; + }; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = false; + + o = s.option(form.ListValue, 'initial_state', _('Initial state'), + _('Expect interface state on up event')); + o.default = 'online'; + o.value('online', _('Online')); + o.value('offline', _('Offline')); + o.modalonly = true; + + o = s.option(form.ListValue, 'family', _('Internet Protocol')); + o.default = 'ipv4'; + o.value('ipv4', _('IPv4')); + o.value('ipv6', _('IPv6')); + o.value('ipv4ipv6', _('IPv4 & IPv6')); + o.modalonly = true; + + o = s.option(form.DynamicList, 'hosts', _('Tracking hostname or IP address'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.')); + //o.datatype = 'hosts'; + o.modalonly = true; + o.rmempty = false; + + o = s.option(form.DynamicList, 'hosts6', _('Tracking hostname or IP address for IPv6'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.')); + //o.datatype = 'hosts'; + o.modalonly = true; + o.depends('family', 'ipv4ipv6'); + o.depends('family', 'ipv6'); + o.rmempty = false; + + o = s.option(form.ListValue, 'type', _('Tracking method'),_('Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.')); + o.default = 'ping'; + o.value('none'); + o.value('ping'); + if (stats[0].type === 'file') { + o.value('httping'); + } + if (stats[1].type === 'file') { + o.value('dns'); + } + /* + if (stats[2].type === 'file') { + o.value('nping-tcp'); + o.value('nping-udp'); + o.value('nping-icmp'); + o.value('nping-arp'); + } + if (stats[3].type === 'file') { + o.value('arping'); + } + */ + o = s.option(form.Flag, 'server_http_test', _('Server http test'), + _('Check if connection work with http by sending a request to server API')); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Flag, 'server_test', _('Server test'), + _('Check if connection work by sending a ping or http request to server over all interfaces, failed if only current interface is not able to.')); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Flag, 'mail_alert', _('Mail alert'), + _('Send a mail when connection status change. You need to configure e-mail settings here.')); + o.rmempty = false; + o.modalonly = true; + + /* + o = s.option(form.Flag, 'httping_ssl', _('Enable ssl tracking'), + _('Enables https tracking on ssl port 443')); + o.depends('type', 'httping'); + o.rmempty = false; + o.modalonly = true; + */ + /* + o = s.option(form.Value, 'reliability', _('Tracking reliability'), + _('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up')); + o.datatype = 'range(1, 100)'; + o.default = '1'; + */ + + o = s.option(form.ListValue, 'count', _('Ping count')); + o.default = '1'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.modalonly = true; + + o = s.option(form.Value, 'size', _('Ping size')); + o.default = '56'; + o.depends('type', 'ping'); + o.value('8'); + o.value('24'); + o.value('56'); + o.value('120'); + o.value('248'); + o.value('504'); + o.value('1016'); + o.value('1472'); + o.value('2040'); + o.datatype = 'range(1, 65507)'; + o.modalonly = true; + + o =s.option(form.Value, 'max_ttl', _('Max TTL')); + o.default = '60'; + o.depends('type', 'ping'); + o.value('10'); + o.value('20'); + o.value('30'); + o.value('40'); + o.value('50'); + o.value('60'); + o.value('70'); + o.datatype = 'range(1, 255)'; + o.modalonly = true; + + o = s.option(form.Flag, 'check_quality', _('Check link quality')); + o.depends('type', 'ping'); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'failure_latency', _('Failure latency [ms]')); + o.depends('check_quality', '1'); + o.default = '1000'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'failure_loss', _('Failure packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '40'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_latency', _('Recovery latency [ms]')); + o.depends('check_quality', '1'); + o.default = '500'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_loss', _('Recovery packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '10'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.Value, "timeout", _("Ping timeout")); + o.default = '4'; + o.value('1', _('%d second').format('1')); + for (var i = 2; i <= 10; i++) + o.value(String(i), _('%d seconds').format(i)); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Value, 'interval', _('Ping interval')); + o.default = '10'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + o.rmempty = false; + + o = s.option(form.Value, 'failure_interval', _('Failure interval'), + _('Ping interval during failure detection')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'), + _('Keep ping failure interval during failure state')); + o.default = false; + o.modalonly = true; + + o = s.option(form.ListValue, 'tries', _('Interface down'), + _('Interface will be deemed down after this many failed ping tests')); + o.default = '5'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.ListValue, 'tries_up', _('Interface up'), + _('Downed interface will be deemed up after this many successful ping tests')); + o.default = "5"; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.Flag, 'restart_down', _('Restart if down'), + _('Restart interface if detected as down.')); + o.rmempty = false; + o.modalonly = true; + + + /* + o = s.option(form.DynamicList, 'flush_conntrack', _('Flush conntrack table'), + _('Flush global firewall conntrack table on interface events')); + o.value('ifup', _('ifup (netifd)')); + o.value('ifdown', _('ifdown (netifd)')); + o.modalonly = true; + */ + + return m.render(); + } +}) diff --git a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/proxy.js b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/proxy.js new file mode 100644 index 000000000..0a4b80e86 --- /dev/null +++ b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/proxy.js @@ -0,0 +1,186 @@ +'use strict'; +'require form'; +'require fs'; +'require view'; +'require uci'; + +var cfgtypes = ['proxy']; + +return view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/usr/bin/httping'), {}), + L.resolveDefault(fs.stat('/usr/bin/dig'), {}), +// L.resolveDefault(fs.stat('/usr/bin/nping'), {}), +// L.resolveDefault(fs.stat('/usr/bin/arping'), {}), + uci.load('network') + ]); + }, + + render: function (stats) { + var m, s, o; + + m = new form.Map('omr-tracker', _('OMR-Tracker - Proxy'), + _('Detect if proxy is down and stop redirection over it.')); + + //s = m.section(form.GridSection, 'defaults'); + s = m.section(form.GridSection); + //s.addremove = true; + s.anonymous = false; + s.nodescriptions = true; + s.cfgsections = function() { + return this.map.data.sections(this.map.config) + .filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; }) + .map(function(s) { return s['.name']; }); + }; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = false; + + o = s.option(form.ListValue, 'initial_state', _('Initial state'), + _('Expect interface state on up event')); + o.default = 'online'; + o.value('online', _('Online')); + o.value('offline', _('Offline')); + o.modalonly = true; + + o = s.option(form.ListValue, 'family', _('Internet Protocol')); + o.default = 'ipv4ipv6'; + //o.value('ipv4', _('IPv4')); + //o.value('ipv6', _('IPv6')); + o.value('ipv4ipv6', _('IPv4 & IPv6')); + o.modalonly = true; + + o = s.option(form.DynamicList, 'hosts', _('Tracking hostname or IP address'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online')); + o.datatype = 'hosts'; + o.modalonly = true; + + o = s.option(form.DynamicList, 'hosts6', _('Tracking hostname or IP address for IPv6'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online')); + o.datatype = 'hosts'; + o.modalonly = true; + o.depends('family', 'ipv4ipv6'); + o.depends('family', 'ipv6'); + + /* + o = s.option(form.Flag, 'httping_ssl', _('Enable ssl tracking'), + _('Enables https tracking on ssl port 443')); + o.depends('track_method', 'httping'); + o.rmempty = false; + o.modalonly = true; + */ + + o = s.option(form.Flag, 'mail_alert', _('Mail alert'), + _('Send a mail when connection status change. You need to configure e-mail settings here.')); + o.rmempty = false; + o.modalonly = true; + + +/* + o = s.option(form.Value, 'reliability', _('Tracking reliability'), + _('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up')); + o.datatype = 'range(1, 100)'; + o.default = '1'; +*/ + o = s.option(form.ListValue, 'tries', _('Test count')); + o.default = '1'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.modalonly = true; + + o = s.option(form.ListValue, "timeout", _("Test timeout")); + o.default = '4'; + o.value('1', _('%d second').format('1')); + for (var i = 2; i <= 10; i++) + o.value(String(i), _('%d seconds').format(i)); + o.modalonly = true; + + o = s.option(form.ListValue, 'interval', _('Test interval')); + o.default = '10'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); +/* + o = s.option(form.Value, 'failure_interval', _('Failure interval'), + _('Ping interval during failure detection')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'), + _('Keep ping failure interval during failure state')); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'recovery_interval', _('Recovery interval'), + _('Ping interval during failure recovering')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.ListValue, 'tries', _('Proxy down'), + _('Proxy will be deemed down after this many failed tests')); + o.default = '5'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.ListValue, 'tries_up', _('Interface up'), + _('Downed interface will be deemed up after this many successful ping tests')); + o.default = "5"; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); +*/ + return m.render(); + } +}) diff --git a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/server.js b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/server.js new file mode 100644 index 000000000..841095f28 --- /dev/null +++ b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/server.js @@ -0,0 +1,216 @@ +'use strict'; +'require form'; +'require fs'; +'require view'; +'require uci'; + +var cfgtypes = ['server']; + +return view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/usr/bin/httping'), {}), + L.resolveDefault(fs.stat('/usr/bin/dig'), {}), +// L.resolveDefault(fs.stat('/usr/bin/nping'), {}), +// L.resolveDefault(fs.stat('/usr/bin/arping'), {}), + uci.load('network') + ]); + }, + + render: function (stats) { + var m, s, o; + + m = new form.Map('omr-tracker', _('OMR-Tracker - Server'), + _('Detect if server is down and use defined backup server in this case.')); + + //s = m.section(form.GridSection, 'defaults'); + s = m.section(form.GridSection); + //s.addremove = true; + s.anonymous = false; + s.nodescriptions = true; + s.cfgsections = function() { + return this.map.data.sections(this.map.config) + .filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; }) + .map(function(s) { return s['.name']; }); + }; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = false; + + o = s.option(form.ListValue, 'initial_state', _('Initial state'), + _('Expect interface state on up event')); + o.default = 'online'; + o.value('online', _('Online')); + o.value('offline', _('Offline')); + o.modalonly = true; + + o = s.option(form.ListValue, 'type', _('Tracking method'),_('Check if VPS api answer or/and ping server IPs.')); + o.default = 'apiping'; + o.value('apiping',_('API & Ping')); + o.value('api',_('API')); + o.value('ping',_('Ping')); + o.value('none',_('None')); + + o = s.option(form.Flag, 'mail_alert', _('Mail alert'), + _('Send a mail when connection status change. You need to configure e-mail settings here.')); + o.rmempty = false; + o.modalonly = true; +/* + o = s.option(form.Value, 'reliability', _('Tracking reliability'), + _('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up')); + o.datatype = 'range(1, 100)'; + o.default = '1'; +*/ + o = s.option(form.ListValue, 'tries', _('Test count')); + o.default = '1'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.modalonly = true; + + o = s.option(form.Flag, 'check_quality', _('Check link quality')); + o.depends('type', 'ping'); + o.depends('type', 'apiping'); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'failure_latency', _('Failure latency [ms]')); + o.depends('check_quality', '1'); + o.default = '1000'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'failure_loss', _('Failure packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '40'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_latency', _('Recovery latency [ms]')); + o.depends('check_quality', '1'); + o.default = '500'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_loss', _('Recovery packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '10'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.ListValue, "timeout", _("Test timeout")); + o.default = '4'; + o.value('1', _('%d second').format('1')); + for (var i = 2; i <= 10; i++) + o.value(String(i), _('%d seconds').format(i)); + o.modalonly = true; + + o = s.option(form.ListValue, 'interval', _('Test interval')); + o.default = '10'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); +/* + o = s.option(form.Value, 'failure_interval', _('Failure interval'), + _('Ping interval during failure detection')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'), + _('Keep ping failure interval during failure state')); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'recovery_interval', _('Recovery interval'), + _('Ping interval during failure recovering')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.ListValue, 'down', _('Interface down'), + _('Interface will be deemed down after this many failed ping tests')); + o.default = '5'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.ListValue, 'up', _('Interface up'), + _('Downed interface will be deemed up after this many successful ping tests')); + o.default = "5"; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); +*/ + return m.render(); + } +}) diff --git a/luci-app-omr-tracker/luasrc/controller/omr-tracker.lua b/luci-app-omr-tracker/luasrc/controller/omr-tracker.lua deleted file mode 100644 index a4fcb23e7..000000000 --- a/luci-app-omr-tracker/luasrc/controller/omr-tracker.lua +++ /dev/null @@ -1,6 +0,0 @@ -module("luci.controller.omr-tracker", package.seeall) - -function index() - --entry({"admin", "openmptcprouter", "omr-tracker"}, cbi("omr-tracker"), _("OMR-Tracker")) - entry({"admin", "services", "omr-tracker"}, cbi("omr-tracker"), _("OMR-Tracker")) -end diff --git a/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua b/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua deleted file mode 100644 index f00afe5fd..000000000 --- a/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua +++ /dev/null @@ -1,193 +0,0 @@ -local net = require "luci.model.network".init() -local sys = require "luci.sys" -local m, s, o - -m = Map("omr-tracker", translate("OMR-Tracker")) - -s = m:section(TypedSection, "proxy", translate("Proxy tracker Settings"), translate("Detect if Proxy is down and stop traffic redirection over it.")) -s.anonymous = true -s.addremove = false - -local sdata = m:get('proxy') -if not sdata then - m:set('proxy', nil, 'proxy') - m:set('proxy', 'enabled', "1") -end - -o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, connection failover is also disabled")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "1" -o.default = "1" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "tries", translate("Tries")) -o.placeholder = "4" -o.default = "4" -o.datatype = "range(1, 10)" -o.rmempty = false - -o = s:option(Value, "interval", translate("Retry interval (s)")) -o.placeholder = "2" -o.default = "2" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "wait_test", translate("Wait after a failed test (s)")) -o.placeholder = "0" -o.default = "0" -o.datatype = "range(0, 100)" -o.rmempty = false - -o = s:option(DynamicList, "hosts", translate("Hosts"), translate("IPs or domains must be available over http")) -o.placeholder = "bing.com" -o.default = { "bing.com", "google.com" } -o.rmempty = false - - -s = m:section(TypedSection, "server", translate("Server tracker Settings"), translate("Detect if Server is down and use defined backup server in this case.")) -s.anonymous = true -s.addremove = false - -local sdata = m:get('server') -if not sdata then - m:set('server', nil, 'server') - m:set('server', 'enabled', "1") -end - -o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, server failover is also disabled")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "1" -o.default = "1" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "tries", translate("Tries")) -o.placeholder = "4" -o.default = "4" -o.datatype = "range(1, 10)" -o.rmempty = false - -o = s:option(Value, "interval", translate("Retry interval (s)")) -o.placeholder = "2" -o.default = "2" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "wait_test", translate("Wait after a failed test (s)")) -o.placeholder = "0" -o.default = "0" -o.datatype = "range(0, 100)" -o.rmempty = false - -s = m:section(TypedSection, "defaults", translate("Defaults Settings"), translate("OMR-Tracker create needed routes and detect when a connection is down or up")) -s.anonymous = true - -o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, connection failover is also disabled")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "1" -o.default = "1" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "tries", translate("Tries")) -o.placeholder = "4" -o.default = "4" -o.datatype = "range(1, 10)" -o.rmempty = false - -o = s:option(Value, "interval", translate("Retry interval (s)")) -o.placeholder = "2" -o.default = "2" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "wait_test", translate("Wait after a failed test (s)")) -o.placeholder = "0" -o.default = "0" -o.datatype = "range(0, 100)" -o.rmempty = false - -o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.")) -o:value("ping","ping") -o:value("httping","httping") -o:value("dns","dns") -o:value("none","none") - -o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection state change")) -o.optional = false -o.rmempty = false -o.default = false -o.disabled = 0 -o.enabled = 1 - -o = s:option(DynamicList, "hosts", translate("Hosts"),translate("Must be IPs and not domains")) -o.placeholder = "4.2.2.1" -o.default = { "4.2.2.1", "8.8.8.8" } -o.rmempty = false - -s = m:section(TypedSection, "interface", translate("Interfaces")) -s.template_addremove = "omr-tracker/cbi-select-add" -s.addremove = true -s.add_select_options = { } -s.add_select_options[''] = '' -for _, iface in ipairs(net:get_networks()) do - if not (iface:name() == "loopback") then - s.add_select_options[iface:name()] = iface:name() - end -end - -o = s:option(Flag, "enabled", translate("Enable")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "1" -o.default = "1" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "tries", translate("Tries")) -o.placeholder = "4" -o.default = "4" -o.datatype = "range(1, 10)" -o.rmempty = false - -o = s:option(Value, "interval", translate("Retry interval (s)")) -o.placeholder = "2" -o.default = "2" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "wait_test", translate("Wait after a failed test (s)")) -o.placeholder = "0" -o.default = "0" -o.datatype = "range(0, 100)" -o.rmempty = false - -o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.")) -o:value("ping","ping") -o:value("httping","httping") -o:value("dns","dns") -o:value("none","none") - -o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection status change. You need to configure e-mail settings here.")) -o.optional = false -o.rmempty = false -o.default = false -o.disabled = 0 -o.enabled = 1 - - -o = s:option(DynamicList, "hosts", translate("Hosts")) -o.placeholder = "4.2.2.1" -o.default = { "4.2.2.1", "8.8.8.8" } -o.rmempty = false - - -return m diff --git a/luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm b/luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm deleted file mode 100644 index 97ee647d2..000000000 --- a/luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm +++ /dev/null @@ -1,10 +0,0 @@ -
- <% if self.invalid_cts then -%>
<% end %> - - - <% if self.invalid_cts then %>
<%:Invalid%>
<% end %> -
diff --git a/luci-app-omr-tracker/po/de/omr-tracker.po b/luci-app-omr-tracker/po/de/omr-tracker.po index 5486fa170..5a60906e0 100644 --- a/luci-app-omr-tracker/po/de/omr-tracker.po +++ b/luci-app-omr-tracker/po/de/omr-tracker.po @@ -10,33 +10,166 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.0.4\n" +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +#, fuzzy msgid "" -"Always ping gateway, then test connection by ping or dns. None mode only " -"ping gateway." +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." msgstr "" "Die Auswahl 'immer' prüft den Server auf ping und dann alle Anschlüsse auf " "Ping und DNS-Verfügbarkeit. 'nie' führt nur Server-Pings durch." +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" msgstr "Werkseinstellungen" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "Hostsysteme" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 msgid "OMR-Tracker" msgstr "OMR-Tracker" -msgid "OMR-Tracker detect when a connection is down" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" msgstr "Der OMR_Tracker erkennt Störungen an Anschlüssen." +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" msgstr "Wiederhol-Abstand (in Sekunden)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" msgstr "Wartezeit (in Sekunden)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" msgstr "Versuche" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" msgstr "Typ" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/de/omr-tracker.po~ b/luci-app-omr-tracker/po/de/omr-tracker.po~ new file mode 100644 index 000000000..41b194360 --- /dev/null +++ b/luci-app-omr-tracker/po/de/omr-tracker.po~ @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#, fuzzy +#| msgid "" +#| "Always ping gateway, then test connection by ping or dns. None mode only " +#| "ping gateway." +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Die Auswahl 'immer' prüft den Server auf ping und dann alle Anschlüsse auf " +"Ping und DNS-Verfügbarkeit. 'nie' führt nur Server-Pings durch." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Werkseinstellungen" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "Hostsysteme" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +#| msgid "OMR-Tracker detect when a connection is down" +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "Der OMR_Tracker erkennt Störungen an Anschlüssen." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Wiederhol-Abstand (in Sekunden)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "Wartezeit (in Sekunden)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Versuche" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Typ" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/fr/omr-tracker.po b/luci-app-omr-tracker/po/fr/omr-tracker.po index 2c4542b88..16d168881 100644 --- a/luci-app-omr-tracker/po/fr/omr-tracker.po +++ b/luci-app-omr-tracker/po/fr/omr-tracker.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2020-08-03 12:39+0000\n" +"PO-Revision-Date: 2021-05-17 17:36+0000\n" "Last-Translator: Weblate Admin \n" "Language-Team: French \n" @@ -11,35 +11,179 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajouter" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "" -"Always ping gateway, then test connection by ping or dns. None mode only " -"ping gateway." +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." msgstr "" -"Ping toujours la passerelle, puis teste la connexion par ping ou DNS. Le " -"mode \"none\" ping uniquement la passerelle." +"Ping toujours la passerelle, puis teste la connexion par ping, httping ou " +"DNS. Le mode \"none\" ping uniquement la passerelle." +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" +"Vérifiez si la connexion fonctionne avec http en envoyant une demande au " +"serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" msgstr "Paramètres par défaut" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" +"Détectez si le proxy est en panne et arrêtez la redirection du trafic dessus." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" +"Détectez si le serveur est en panne et utilisez le serveur de sauvegarde " +"défini dans ce cas." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "Activer" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "Accorder l'accès UCI pour luci-app-tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "Hôtes" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "Hôtes IPv6" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "Les adresses IP ou les domaines doivent être disponibles via http" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "Interfaces" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalide" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "Alerte mail" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "Doit être des adresses IP et non des domaines" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 msgid "OMR-Tracker" msgstr "OMR-Tracker" -msgid "OMR-Tracker detect when a connection is down" -msgstr "OMR-Tracker détecte quand une connexion ne fonctionne plus" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "" +"OMR-Tracker crée les routes nécessaires et détecte lorsqu'une connexion est " +"en panne" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "Paramètres de suivi du proxy" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "Redémarrer si en panne" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "Redémarrez l'interface si elle est détectée comme étant en panne" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" msgstr "Intervalle entre les essais (s)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "Envoyer un e-mail lorsque l'état de la connexion change" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" +"Envoyer un mail lorsque l'état de la connexion change. Vous devez configurer " +"les paramètres e-mail ici." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "Test http du serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "Paramètres de suivi du serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" msgstr "Délais d'attente (s)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" msgstr "Essais" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" msgstr "Type" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "Attendre après un test échoué (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" +"Lorsque le tracker est désactivé, le basculement de connexion est également " +"désactivé" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" +"Lorsque le tracker est désactivé, le basculement du serveur est également " +"désactivé" diff --git a/luci-app-omr-tracker/po/fr/omr-tracker.po~ b/luci-app-omr-tracker/po/fr/omr-tracker.po~ new file mode 100644 index 000000000..7cb6f825e --- /dev/null +++ b/luci-app-omr-tracker/po/fr/omr-tracker.po~ @@ -0,0 +1,159 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajouter" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Ping toujours la passerelle, puis teste la connexion par ping, httping ou " +"DNS. Le mode \"none\" ping uniquement la passerelle." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Paramètres par défaut" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" +"Détectez si le proxy est en panne et arrêtez la redirection du trafic dessus." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" +"Détectez si le serveur est en panne et utilisez le serveur de sauvegarde " +"défini dans ce cas." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "Activer" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "Accorder l'accès UCI pour luci-app-tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "Hôtes" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "Les adresses IP ou les domaines doivent être disponibles via http" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "Interfaces" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalide" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "Alerte mail" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "Doit être des adresses IP et non des domaines" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "" +"OMR-Tracker crée les routes nécessaires et détecte lorsqu'une connexion est " +"en panne" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "Paramètres de suivi du proxy" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Intervalle entre les essais (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "Envoyer un e-mail lorsque l'état de la connexion change" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" +"Envoyer un mail lorsque l'état de la connexion change. Vous devez configurer " +"les paramètres e-mail ici." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "Paramètres de suivi du serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "Délais d'attente (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Essais" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Type" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "Attendre après un test échoué (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" +"Lorsque le tracker est désactivé, le basculement de connexion est également " +"désactivé" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" +"Lorsque le tracker est désactivé, le basculement du serveur est également " +"désactivé" diff --git a/luci-app-omr-tracker/po/it/omr-tracker.po b/luci-app-omr-tracker/po/it/omr-tracker.po index 2e88f23f7..337631a7f 100644 --- a/luci-app-omr-tracker/po/it/omr-tracker.po +++ b/luci-app-omr-tracker/po/it/omr-tracker.po @@ -1,42 +1,175 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-09-21 12:51+0000\n" -"Last-Translator: Weblate Admin \n" +"PO-Revision-Date: 2022-02-20 20:24+0000\n" +"Last-Translator: tiziano \n" "Language-Team: Italian \n" "Language: it\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.10.1\n" +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "Aggiungi" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +#, fuzzy msgid "" -"Always ping gateway, then test connection by ping or dns. None mode only " -"ping gateway." +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." msgstr "" "Esegui sempre il ping del gateway, quindi verifica la connessione tramite " "ping o DNS." +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" msgstr "Impostazioni predefinite" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "Interfacce" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 msgid "OMR-Tracker" msgstr "" -msgid "OMR-Tracker detect when a connection is down" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" msgstr "OMR-Tracker rileva quando una connessione è interrotta" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" msgstr "Intervallo di ripetizione (s)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" msgstr "Tentativi" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" msgstr "Tipo" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/it/omr-tracker.po~ b/luci-app-omr-tracker/po/it/omr-tracker.po~ new file mode 100644 index 000000000..61ebe850d --- /dev/null +++ b/luci-app-omr-tracker/po/it/omr-tracker.po~ @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#, fuzzy +#| msgid "" +#| "Always ping gateway, then test connection by ping or dns. None mode only " +#| "ping gateway." +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Esegui sempre il ping del gateway, quindi verifica la connessione tramite " +"ping o DNS." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Impostazioni predefinite" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +#| msgid "OMR-Tracker detect when a connection is down" +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "OMR-Tracker rileva quando una connessione è interrotta" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Intervallo di ripetizione (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Tentativi" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Tipo" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/oc/omr-tracker.po b/luci-app-omr-tracker/po/oc/omr-tracker.po index 178b33f23..0ed531bb0 100644 --- a/luci-app-omr-tracker/po/oc/omr-tracker.po +++ b/luci-app-omr-tracker/po/oc/omr-tracker.po @@ -10,33 +10,166 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.0.4\n" +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +#, fuzzy msgid "" -"Always ping gateway, then test connection by ping or dns. None mode only " -"ping gateway." +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." msgstr "" "Totjorn enviar un ping a la palanca puèi la connexion via ping o DNS. Lo " "mòde \"none\" ping sonque la palanca." +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" msgstr "Paramètres per defaut" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "Òstes" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 msgid "OMR-Tracker" msgstr "OMR-Tracker" -msgid "OMR-Tracker detect when a connection is down" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" msgstr "OMR-Tracker detècta quand una connexion fonciona pas mai" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" msgstr "Interval entre ensages" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" msgstr "Relambi d'espèra (s)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" msgstr "Ensages" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" msgstr "Tipe" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/oc/omr-tracker.po~ b/luci-app-omr-tracker/po/oc/omr-tracker.po~ new file mode 100644 index 000000000..6e2159871 --- /dev/null +++ b/luci-app-omr-tracker/po/oc/omr-tracker.po~ @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-18 17:37+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#, fuzzy +#| msgid "" +#| "Always ping gateway, then test connection by ping or dns. None mode only " +#| "ping gateway." +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Totjorn enviar un ping a la palanca puèi la connexion via ping o DNS. Lo " +"mòde \"none\" ping sonque la palanca." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Paramètres per defaut" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "Òstes" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +#| msgid "OMR-Tracker detect when a connection is down" +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "OMR-Tracker detècta quand una connexion fonciona pas mai" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Interval entre ensages" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "Relambi d'espèra (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Ensages" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Tipe" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/templates/omr-tracker.pot b/luci-app-omr-tracker/po/templates/omr-tracker.pot index f71762609..4cdce9be1 100644 --- a/luci-app-omr-tracker/po/templates/omr-tracker.pot +++ b/luci-app-omr-tracker/po/templates/omr-tracker.pot @@ -6,12 +6,17 @@ msgid "Add" msgstr "" #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "" "Always ping gateway, then test connection by ping, httping or dns. None mode " "only ping gateway." msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" msgstr "" @@ -27,7 +32,7 @@ msgstr "" #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 msgid "Enable" msgstr "" @@ -36,16 +41,21 @@ msgid "Grant UCI access for luci-app-omr-tracker" msgstr "" #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 msgid "IPs or domains must be available over http" msgstr "" -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 msgid "Interfaces" msgstr "" @@ -53,12 +63,15 @@ msgstr "" msgid "Invalid" msgstr "" -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 msgid "Mail alert" msgstr "" -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 msgid "Must be IPs and not domains" msgstr "" @@ -77,23 +90,38 @@ msgstr "" msgid "Proxy tracker Settings" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" msgstr "" -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 msgid "Send a mail when connection state change" msgstr "" -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 msgid "" "Send a mail when connection status change. You need to configure e-mail " "settings here." msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 msgid "Server tracker Settings" msgstr "" @@ -101,26 +129,26 @@ msgstr "" #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" msgstr "" #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" msgstr "" #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" msgstr "" #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 #: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 -#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 msgid "Wait after a failed test (s)" msgstr "" diff --git a/luci-app-omr-tracker/po/zh_Hans/omr-tracker.po b/luci-app-omr-tracker/po/zh_Hans/omr-tracker.po index 856001abd..43d1ab8dc 100644 --- a/luci-app-omr-tracker/po/zh_Hans/omr-tracker.po +++ b/luci-app-omr-tracker/po/zh_Hans/omr-tracker.po @@ -1,40 +1,173 @@ msgid "" msgstr "" -"PO-Revision-Date: 2020-12-04 16:02+0000\n" -"Last-Translator: antrouter \n" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.0.4\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "添加" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "" -"Always ping gateway, then test connection by ping or dns. None mode only " -"ping gateway." -msgstr "始终对网关执行ping操作,然后通过ping或dns测试连接,无模式仅可ping网关." +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "总是ping网关,然后通过ping, http或dns测试连接。无模式仅ping网关。" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "通过向服务器发送请求,检查连接是否与http工作" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" -msgstr "蚂蚁默认设置" +msgstr "默认设置" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "检测代理是否关闭并停止通过它的流量重定向。" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "检测服务器是否关闭,并在这种情况下使用定义的备份服务器。" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "启用" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "授权UCI访问聚合跟踪器" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "主机" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "IPv6 主机" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "ip或域必须在http上可用" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "接口" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "无效的" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "邮件提醒" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "必须是ip而不是域" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 msgid "OMR-Tracker" -msgstr "蚂蚁跟踪器" +msgstr "聚合跟踪器" -msgid "OMR-Tracker detect when a connection is down" -msgstr "蚂蚁跟踪器检测网卡何时断开" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "聚合跟踪器创建所需的路径,并检测连接何时断开或接通" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "代理跟踪设置" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "如果关闭,重新启动" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "如果检测到接口关闭,重新启动接口" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" -msgstr "重试间隔 (秒)" +msgstr "重试时间间隔(秒)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "当连接状态改变时发送邮件" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" +"当连接状态发生变化时发送邮件。你需要配置电子邮件设置这里。" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "服务器http测试" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "服务器跟踪设置" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" -msgstr "超时(s)" +msgstr "超时(秒)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" -msgstr "尝试多少次" +msgstr "尝试" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" msgstr "类型" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "在测试失败后等待(秒)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "禁用跟踪器时,也禁用连接故障转移" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "禁用跟踪器时,也禁用服务器故障转移" diff --git a/luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json b/luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json index ed1c7a074..fbe9e0b6c 100644 --- a/luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json +++ b/luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json @@ -1,13 +1,36 @@ { "admin/services/omr-tracker": { - "title": "OMR-Tracker", - "order": 10, + "title": "OMR-Tracker Manager", + "order": 60, "action": { - "type": "cbi", - "path": "omr-tracker" + "type": "firstchild" }, "depends": { "acl": [ "luci-app-omr-tracker" ] } + }, + "admin/services/omr-tracker/interface": { + "title": "Interface", + "order": 10, + "action": { + "type": "view", + "path": "omr-tracker/network/interface" + } + }, + "admin/services/omr-tracker/proxy": { + "title": "Proxy", + "order": 20, + "action": { + "type": "view", + "path": "omr-tracker/network/proxy" + } + }, + "admin/services/omr-tracker/server": { + "title": "Server", + "order": 30, + "action": { + "type": "view", + "path": "omr-tracker/network/server" + } } } diff --git a/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json b/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json index c55ce91d4..31a2a4b62 100644 --- a/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json +++ b/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json @@ -2,7 +2,13 @@ "luci-app-omr-tracker": { "description": "Grant UCI access for luci-app-omr-tracker", "read": { - "uci": [ "omr-tracker" ] + "uci": [ "omr-tracker" ], + "file": { + "/usr/bin/httping": [ "list" ], + "/usr/bin/dig": [ "list" ], + "/usr/bin/nping": [ "list" ], + "/usr/bin/arping": [ "list" ] + } }, "write": { "uci": [ "omr-tracker" ] diff --git a/luci-app-openmptcprouter/Makefile b/luci-app-openmptcprouter/Makefile index ae4cb6eea..38a5aab6a 100644 --- a/luci-app-openmptcprouter/Makefile +++ b/luci-app-openmptcprouter/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Support for OpenMPTCProuter -LUCI_DEPENDS:=+luci-lib-json +rdisc6 +curl +bind-dig +tracebox +LUCI_DEPENDS:=+luci-lib-json +openmptcprouter-api PKG_LICENSE:=GPLv3 #include ../luci/luci.mk diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css index 2e90291e6..b4a8d7a02 100644 --- a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css @@ -1,6 +1,6 @@ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: 1044px; + max-width: 1500px; } #interface_field { padding: 12px 20px 20px 20px; @@ -31,12 +31,9 @@ text-align: center; } /* Mwan3 ligthed CSS */ -.container { - /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: 1044px; -} #interface_field { padding: 0px; + max-width: 1200px; } #interface_field td { padding: 0px; @@ -71,7 +68,7 @@ ul { -moz-transition: all 0.5s; } .tree ul ul { - padding-left: 85px; + padding-left: 5px; position: relative; } .tree > ul > li:first-child { @@ -152,7 +149,7 @@ right connector from last child*/ top: 50%; left: 0; border-top: 2px solid black; - width: 85px; + width: 7px; height: 100%; } .tree li a { @@ -222,7 +219,7 @@ right connector from last child*/ width: 2px; /*height: 50%;*/ height: 55px; - left: 200px; + left: 240px; /* z-index: -10;*/ } /*Time for some hover effects*/ @@ -243,9 +240,9 @@ Thanks :)*/ .network-node { position: relative; background-color: #f3f3f3; - padding: 12px; - width: 400px; - max-width: 400px; + padding: 8px; + width: 480px; + max-width: 480px; box-sizing: border-box; min-height: 170px; } @@ -282,7 +279,7 @@ Thanks :)*/ .network-node .info { position: relative; float: right; - width: 250px; + width: 330px; text-align: left; font-size: 12px; color: #757575; @@ -319,7 +316,7 @@ Thanks :)*/ width:5px; border-right:2px dotted black; height:70px; - padding-right: 195px; + padding-right: 240px; } #omr { min-height: 190px; @@ -332,4 +329,6 @@ Thanks :)*/ } .spaceline { height: 55px; + z-index: -10; + position: relative; } diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/proxy.js b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/proxy.js new file mode 100644 index 000000000..d7b9300b6 --- /dev/null +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/proxy.js @@ -0,0 +1,18 @@ +'use strict'; +'require baseclass'; +'require form'; + +return baseclass.extend({ + trigger: _('Proxy status (service: proxy)'), + kernel: false, + addFormOptions: function(s){ + var o; + + o = s.option(form.ListValue, 'proxy_status', _('Proxy Status')); + o.rmempty = true; + o.modalonly = true; + o.value('up', _('Up')); + o.value('down', _('Down')); + o.depends('trigger','proxy'); + } +}); diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/vpn.js b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/vpn.js new file mode 100644 index 000000000..85f28a8a2 --- /dev/null +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/vpn.js @@ -0,0 +1,18 @@ +'use strict'; +'require baseclass'; +'require form'; + +return baseclass.extend({ + trigger: _('VPN status (service: vpn)'), + kernel: false, + addFormOptions: function(s){ + var o; + + o = s.option(form.ListValue, 'vpn_status', _('VPN Status')); + o.rmempty = true; + o.modalonly = true; + o.value('up', _('Up')); + o.value('down', _('Down')); + o.depends('trigger','vpn'); + } +}); diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index 5de2cda24..2c7713fa3 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -26,7 +26,11 @@ end function interface_from_device(dev) for _, iface in ipairs(net:get_networks()) do local ifacen = iface:name() - local ifacename = ucic:get("network",ifacen,"ifname") + local ifacename = "" + ifacename = ucic:get("network",ifacen,"device") + if ifacename == "" then + ifacename = ucic:get("network",ifacen,"ifname") + end if ifacename == dev then return ifacen end @@ -34,8 +38,28 @@ function interface_from_device(dev) return "" end +function uci_device_from_interface(intf) + intfname = ucic:get("network",intf,"device") + deviceuci = "" + ucic:foreach("network", "device", function(s) + if intfname == ucic:get("network",s[".name"],"name") then + deviceuci = s[".name"] + end + end) + return deviceuci +end + function wizard_add() local gostatus = true + + -- Force WAN zone firewall members to be a list + local fwwan = sys.exec("uci -q get firewall.zone_wan.network") + luci.sys.call("uci -q delete firewall.zone_wan.network") + for interface in fwwan:gmatch("%S+") do + luci.sys.call("uci -q add_list firewall.zone_wan.network=" .. interface) + end + ucic:save("firewall") + -- Add new server local add_server = luci.http.formvalue("add_server") or "" local add_server_name = luci.http.formvalue("add_server_name") or "" @@ -66,10 +90,12 @@ function wizard_add() ucic:foreach("openmptcprouter", "server", function(s) local servername = s[".name"] nbserver = nbserver + 1 - server_ip = ucic:get("openmptcprouter",servername,"ip") + server_ips = ucic:get_list("openmptcprouter",servername,"ip") + server_ip = server_ips[1] end) if nbserver == 1 and server_ip ~= "" and server_ip ~= nil then ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("shadowsocks-rust","sss0","server",server_ip) ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun-udp","vpn","host",server_ip) ucic:set("dsvpn","vpn","host",server_ip) @@ -103,7 +129,10 @@ function wizard_add() end) local defif = "eth0" if add_interface_ifname == "" then - local defif1 = ucic:get("network","wan1_dev","ifname") or "" + local defif1 = ucic:get("network","wan1_dev","device") or "" + if defif1 == "" then + defif1 = ucic:get("network","wan1_dev","ifname") or "" + end if defif1 ~= "" then defif = defif1 end @@ -116,17 +145,30 @@ function wizard_add() if ointf ~= "" then if ucic:get("network",ointf,"type") == "" then ucic:set("network",ointf,"type","macvlan") + ucic:set("network",ointf,"device",ointf) + ucic:set("network",ointf .. "_dev","device") + ucic:set("network",ointf .. "_dev","type","macvlan") + ucic:set("network",ointf .. "_dev","mode","vepa") + ucic:set("network",ointf .. "_dev","ifname",defif) + ucic:set("network",ointf .. "_dev","name",ointf) end wanif = "wan" .. i end ucic:set("network","wan" .. i,"interface") - ucic:set("network","wan" .. i,"ifname",defif) + ucic:set("network","wan" .. i,"device",defif) ucic:set("network","wan" .. i,"proto","static") ucic:set("openmptcprouter","wan" .. i,"interface") if ointf ~= "" then ucic:set("network","wan" .. i,"type","macvlan") + ucic:set("network","wan" .. i,"device","wan" .. i) ucic:set("network","wan" .. i,"masterintf",defif) + ucic:set("network","wan" .. i .. "_dev","device") + ucic:set("network","wan" .. i .. "_dev","type","macvlan") + ucic:set("network","wan" .. i .. "_dev","mode","vepa") + ucic:set("network","wan" .. i .. "_dev","ifname",defif) + ucic:set("network","wan" .. i .. "_dev","name","wan" .. i) + ucic:set("network","wan" .. i .. "_dev","txqueuelen","1000") end ucic:set("network","wan" .. i,"ip4table","wan") if multipath_master then @@ -157,17 +199,17 @@ function wizard_add() else ucic:set("sqm","wan" .. i,"interface",defif) end - ucic:set("sqm","wan" .. i,"qdisc","fq_codel") - ucic:set("sqm","wan" .. i,"script","simple.qos") + ucic:set("sqm","wan" .. i,"qdisc","cake") + ucic:set("sqm","wan" .. i,"script","piece_of_cake.qos") ucic:set("sqm","wan" .. i,"qdisc_advanced","0") ucic:set("sqm","wan" .. i,"linklayer","none") - ucic:set("sqm","wan" .. i,"enabled","0") + ucic:set("sqm","wan" .. i,"enabled","1") ucic:set("sqm","wan" .. i,"debug_logging","0") ucic:set("sqm","wan" .. i,"verbosity","5") ucic:set("sqm","wan" .. i,"download","0") ucic:set("sqm","wan" .. i,"upload","0") - ucic:set("sqm","wan" .. i,"iqdisc_opts","autorate-ingress nat dual-dsthost") - ucic:set("sqm","wan" .. i,"eqdisc_opts","nat dual-srchost") + ucic:set("sqm","wan" .. i,"iqdisc_opts","autorate-ingress dual-dsthost") + ucic:set("sqm","wan" .. i,"eqdisc_opts","dual-srchost") ucic:save("sqm") ucic:commit("sqm") @@ -175,10 +217,11 @@ function wizard_add() luci.sys.call("uci -q commit vnstat") -- Dirty way to add new interface to firewall... - luci.sys.call("uci -q add_list firewall.@zone[1].network=wan" .. i) + luci.sys.call("uci -q add_list firewall.zone_wan.network=wan" .. i) luci.sys.call("uci -q commit firewall") luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") gostatus = false end @@ -186,9 +229,14 @@ function wizard_add() local delete_intf = luci.http.formvaluetable("delete") or "" if delete_intf ~= "" then for intf, _ in pairs(delete_intf) do - local defif = ucic:get("network",intf,"ifname") + local defif = ucic:get("network",intf,"ifname") or "" + if defif == "" then + defif = ucic:get("network",intf,"ifname") + end ucic:delete("network",intf) - ucic:delete("network",intf .. "_dev") + if ucic:get("network",intf .. "_dev") ~= "" then + ucic:delete("network",intf .. "_dev") + end ucic:save("network") ucic:commit("network") ucic:delete("sqm",intf) @@ -204,13 +252,20 @@ function wizard_add() luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif) end luci.sys.call("uci -q commit vnstat") - luci.sys.call("uci -q del_list firewall.@zone[1].network=" .. intf) + luci.sys.call("uci -q del_list firewall.zone_wan.network=" .. intf) luci.sys.call("uci -q commit firewall") gostatus = false end end + -- Enable/disable IPv6 + local disableipv6 = luci.http.formvalue("enableipv6") or "1" + ucic:set("openmptcprouter","settings","disable_ipv6",disableipv6) + + -- Set interfaces settings + local downloadmax = 0 + local uploadmax = 0 local interfaces = luci.http.formvaluetable("intf") for intf, _ in pairs(interfaces) do local label = luci.http.formvalue("cbid.network.%s.label" % intf) or "" @@ -218,12 +273,16 @@ function wizard_add() local typeintf = luci.http.formvalue("cbid.network.%s.type" % intf) or "" local masterintf = luci.http.formvalue("cbid.network.%s.masterintf" % intf) or "" local ifname = luci.http.formvalue("cbid.network.%s.intf" % intf) or "" + local vlan = luci.http.formvalue("cbid.network.%s.vlan" % intf) or "" local device_ncm = luci.http.formvalue("cbid.network.%s.device.ncm" % intf) or "" local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or "" local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or "" local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or "" + local ip6addr = luci.http.formvalue("cbid.network.%s.ip6addr" % intf) or "" local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or "" local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or "" + local ip6gw = luci.http.formvalue("cbid.network.%s.ip6gw" % intf) or "" + local ipv6 = luci.http.formvalue("cbid.network.%s.ipv6" % intf) or "0" local apn = luci.http.formvalue("cbid.network.%s.apn" % intf) or "" local pincode = luci.http.formvalue("cbid.network.%s.pincode" % intf) or "" local delay = luci.http.formvalue("cbid.network.%s.delay" % intf) or "" @@ -232,29 +291,83 @@ function wizard_add() local auth = luci.http.formvalue("cbid.network.%s.auth" % intf) or "" local mode = luci.http.formvalue("cbid.network.%s.mode" % intf) or "" local sqmenabled = luci.http.formvalue("cbid.sqm.%s.enabled" % intf) or "0" + local sqmautorate = luci.http.formvalue("cbid.sqm.%s.autorate" % intf) or "0" + local qosenabled = luci.http.formvalue("cbid.qos.%s.enabled" % intf) or "0" local multipath = luci.http.formvalue("cbid.network.%s.multipath" % intf) or "on" local lan = luci.http.formvalue("cbid.network.%s.lan" % intf) or "0" + local ttl = luci.http.formvalue("cbid.network.%s.ttl" % intf) or "" if typeintf ~= "" then if typeintf == "normal" then typeintf = "" end ucic:set("network",intf,"type",typeintf) end + if vlan ~= "" then + ifname = ifname .. '.' .. vlan + end if typeintf == "macvlan" and masterintf ~= "" then ucic:set("network",intf,"type","macvlan") + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","type","macvlan") + ucic:set("network",intf .. "_dev","ifname",masterintf) + ucic:set("network",intf .. "_dev","mode","vepa") + ucic:set("network",intf .. "_dev","name",intf) + ucic:set("network",intf,"device",intf) ucic:set("network",intf,"masterintf",masterintf) - elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" ) then - ucic:set("network",intf,"ifname",ifname) + elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" or proto == "dhcpv6") then + ucic:set("network",intf,"device",ifname) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",ifname) + end elseif typeintf == "" and device ~= "" and proto == "ncm" then ucic:set("network",intf,"device",device_ncm) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",device_ncm) + end elseif typeintf == "" and device ~= "" and proto == "qmi" then ucic:set("network",intf,"device",device_qmi) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",device_qmi) + end elseif typeintf == "" and device ~= "" and proto == "modemmanager" then ucic:set("network",intf,"device",device_manager) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",device_manager) + end + elseif typeintf == "" and ifname ~= "" and proto == "static" then + ucic:set("network",intf,"device",ifname) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",ifname) + end + end + if typeintf ~= "macvlan" then + if ucic:get("network",intf .. "_dev","type") == "macvlan" then + ucic:delete("network",intf .. "_dev","type") + ucic:delete("network",intf .. "_dev","mode") + ucic:delete("network",intf .. "_dev","ifname") + ucic:delete("network",intf .. "_dev","macaddr") + end + ucic:delete("network",intf,"masterintf") + end + if proto == "pppoe" then + ucic:set("network",intf,"pppd_options","persist maxfail 0") end if proto ~= "other" then ucic:set("network",intf,"proto",proto) end + + uci_device = uci_device_from_interface(intf) + if uci_device == "" then + uci_device = intf .. "_dev" + ucic:set("network",uci_device,"device") + end + ucic:set("network",uci_device,"ttl",ttl) + ucic:set("network",intf,"apn",apn) ucic:set("network",intf,"pincode",pincode) ucic:set("network",intf,"delay",delay) @@ -263,6 +376,7 @@ function wizard_add() ucic:set("network",intf,"auth",auth) ucic:set("network",intf,"mode",mode) ucic:set("network",intf,"label",label) + ucic:set("network",intf,"ipv6",ipv6) if lan == "1" then ucic:set("network",intf,"multipath","off") else @@ -271,15 +385,38 @@ function wizard_add() end ucic:set("network",intf,"defaultroute",0) ucic:set("network",intf,"peerdns",0) + ucic:set("network",intf,"delegate",0) if ipaddr ~= "" then - ucic:set("network",intf,"ipaddr",ipaddr) - ucic:set("network",intf,"netmask",netmask) - ucic:set("network",intf,"gateway",gateway) + ucic:set("network",intf,"ipaddr",ipaddr:gsub("%s+", "")) + ucic:set("network",intf,"netmask",netmask:gsub("%s+", "")) + ucic:set("network",intf,"gateway",gateway:gsub("%s+", "")) else ucic:set("network",intf,"ipaddr","") ucic:set("network",intf,"netmask","") ucic:set("network",intf,"gateway","") end + if ip6addr ~= "" then + ucic:set("network",intf,"ip6addr",ip6addr:gsub("%s+", "")) + ucic:set("network",intf,"ip6gw",ip6gw:gsub("%s+", "")) + ucic:set("network",intf,"ipv6","1") + elseif proto ~= "static" and proto ~= "dhcp" and disableipv6 ~= "1" then + ucic:set("network",intf,"ip6addr","") + ucic:set("network",intf,"ip6gw","") + ucic:set("network",intf,"ipv6","1") + else + ucic:set("network",intf,"ip6addr","") + ucic:set("network",intf,"ip6gw","") + ucic:set("network",intf,"ipv6","0") + end + + if proto == "dhcpv6" then + ucic:set("network",intf,"reqaddress","try") + ucic:set("network",intf,"reqprefix","no") + ucic:set("network",intf,"iface_map","0") + ucic:set("network",intf,"iface_dslite","0") + ucic:set("network",intf,"iface_464xlate","0") + ucic:set("network",intf,"ipv6","1") + end ucic:delete("openmptcprouter",intf,"lc") ucic:save("openmptcprouter") @@ -290,8 +427,10 @@ function wizard_add() local downloadspeed = luci.http.formvalue("cbid.sqm.%s.download" % intf) or "0" local uploadspeed = luci.http.formvalue("cbid.sqm.%s.upload" % intf) or "0" + local testspeed = luci.http.formvalue("cbid.sqm.%s.testspeed" % intf) or "0" - if not ucic:get("qos",intf) ~= "" then + local qos_settings = ucic:get("qos",intf) or "" + if qos_settings == "" then ucic:set("qos",intf,"interface") ucic:set("qos",intf,"classgroup","Default") ucic:set("qos",intf,"enabled","0") @@ -299,54 +438,85 @@ function wizard_add() ucic:set("qos",intf,"download","100000") end - if not ucic:get("sqm",intf) ~= "" then + local sqm_settings = ucic:get("sqm",intf) or "" + if sqm_settings == "" then local defif = get_device(intf) if defif == "" then - defif = ucic:get("network",intf,"ifname") or "" + defif = ucic:get("network",intf,"device") or "" + if defif == "" then + defif = ucic:get("network",intf,"ifname") or "" + end end ucic:set("sqm",intf,"queue") ucic:set("sqm",intf,"interface",defif) - ucic:set("sqm",intf,"qdisc","fq_codel") - ucic:set("sqm",intf,"script","simple.qos") + ucic:set("sqm",intf,"qdisc","cake") + ucic:set("sqm",intf,"script","piece_of_cake.qos") ucic:set("sqm",intf,"qdisc_advanced","0") - ucic:set("sqm",intf,"linklayer","none") + ucic:set("sqm",intf,"linklayer","atm") + ucic:set("sqm",intf,"overhead","44") ucic:set("sqm",intf,"enabled","0") ucic:set("sqm",intf,"debug_logging","0") ucic:set("sqm",intf,"verbosity","5") ucic:set("sqm",intf,"download","0") ucic:set("sqm",intf,"upload","0") - ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress nat dual-dsthost") - ucic:set("sqm",intf,"eqdisc_opts","nat dual-srchost") + ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress") + --ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress dual-dsthost") + --ucic:set("sqm",intf,"eqdisc_opts","dual-srchost") end + ucic:set("sqm",intf,"autorate",sqmautorate) + if sqmautorate == "1" then + ucic:set("sqm",intf,"qdisc","cake") + ucic:set("sqm",intf,"script","piece_of_cake.qos") + end + ucic:set("openmptcprouter",intf,"testspeed",testspeed) + if testspeed == "1" then + ucic:delete("openmptcprouter",intf,"testspeed_lc") + end if downloadspeed ~= "0" and downloadspeed ~= "" then + if sqmautorate == "1" and (ucic:get("network",intf,"downloadspeed") ~= downloadspeed or ucic:get("sqm",intf,"max_download") == "" or ucic:get("sqm",intf,"download") == "0") then + ucic:set("sqm",intf,"download",math.ceil(downloadspeed*65/100)) + ucic:set("sqm",intf,"min_download",math.ceil(downloadspeed*10/100)) + ucic:set("sqm",intf,"max_download",downloadspeed) + elseif sqmautorate ~= "1" then + ucic:set("sqm",intf,"download",math.ceil(downloadspeed*95/100)) + end ucic:set("network",intf,"downloadspeed",downloadspeed) - ucic:set("sqm",intf,"download",math.ceil(downloadspeed*95/100)) ucic:set("qos",intf,"download",math.ceil(downloadspeed*95/100)) + downloadmax = downloadmax + tonumber(downloadspeed) else + ucic:delete("network",intf,"downloadspeed") ucic:set("sqm",intf,"download","0") ucic:set("qos",intf,"download","0") end if uploadspeed ~= "0" and uploadspeed ~= "" then + if sqmautorate == "1" and (ucic:get("network",intf,"uploadspeed") ~= uploadspeed or ucic:get("sqm",intf,"max_upload") == "" or ucic:get("sqm",intf,"upload") == "0") then + ucic:set("sqm",intf,"upload",math.ceil(uploadspeed*65/100)) + ucic:set("sqm",intf,"min_upload",math.ceil(uploadspeed*10/100)) + ucic:set("sqm",intf,"max_upload",uploadspeed) + elseif sqmautorate ~= "1" then + ucic:set("sqm",intf,"upload",math.ceil(uploadspeed*95/100)) + end ucic:set("network",intf,"uploadspeed",uploadspeed) - ucic:set("sqm",intf,"upload",math.ceil(uploadspeed*95/100)) ucic:set("qos",intf,"upload",math.ceil(uploadspeed*95/100)) + uploadmax = uploadmax + tonumber(uploadspeed) else + ucic:delete("network",intf,"uploadspeed") ucic:set("sqm",intf,"upload","0") ucic:set("qos",intf,"upload","0") end - if downloadspeed ~= "0" and downloadspeed ~= "" and uploadspeed ~= "0" and uploadspeed ~= "" then - ucic:set("sqm",intf,"enabled","0") - ucic:set("qos",intf,"enabled","0") - end if sqmenabled == "1" then - ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress nat dual-dsthost") - ucic:set("sqm",intf,"eqdisc_opts","nat dual-srchost") + ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress") + --ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress dual-dsthost") + --ucic:set("sqm",intf,"eqdisc_opts","dual-srchost") ucic:set("sqm",intf,"enabled","1") - ucic:set("qos",intf,"enabled","1") else ucic:set("sqm",intf,"enabled","0") + end + if qosenabled == "1" then + ucic:set("qos",intf,"enabled","1") + else ucic:set("qos",intf,"enabled","0") end end @@ -363,9 +533,6 @@ function wizard_add() ucic:save("network") ucic:commit("network") - -- Enable/disable IPv6 - local disableipv6 = luci.http.formvalue("enableipv6") or "1" - ucic:set("openmptcprouter","settings","disable_ipv6",disableipv6) --local ut = require "luci.util" --local result = ut.ubus("openmptcprouter", "set_ipv6_state", { disable_ipv6 = disableipv6 }) local ula = luci.http.formvalue("ula") or "" @@ -385,7 +552,7 @@ function wizard_add() vpn_intf = "mlvpn0" ucic:set("network","omrvpn","proto","dhcp") elseif default_vpn == "ubond" then - vpn_port = 65201 + vpn_port = 65251 vpn_intf = "ubond0" ucic:set("network","omrvpn","proto","dhcp") elseif default_vpn == "dsvpn" then @@ -400,8 +567,24 @@ function wizard_add() vpn_intf = "bonding-omrvpn" ucic:set("network","omrvpn","proto","bonding") end + --if downloadmax ~= 0 and uploadmax ~= 0 then + -- ucic:set("sqm","omrvpn","enabled","1") + -- ucic:set("sqm","omrvpn","max_download",downloadmax) + -- ucic:set("sqm","omrvpn","max_upload",uploadmax) + -- ucic:set("sqm","omrvpn","download",math.ceil(downloadmax*50/100)) + -- ucic:set("sqm","omrvpn","min_download",math.ceil(downloadmax*8/100)) + -- ucic:set("sqm","omrvpn","upload",math.ceil(uploadmax*50/100)) + -- ucic:set("sqm","omrvpn","min_upload",math.ceil(uploadmax*8/100)) + --else + -- ucic:set("sqm","omrvpn","enabled","0") + --end + + ucic:set("sqm","omrvpn","enabled","0") + ucic:set("sqm","omrvpn","download","0") + ucic:set("sqm","omrvpn","upload","0") + if vpn_intf ~= "" then - ucic:set("network","omrvpn","ifname",vpn_intf) + ucic:set("network","omrvpn","device",vpn_intf) ucic:set("sqm","omrvpn","interface",vpn_intf) ucic:save("network") ucic:commit("network") @@ -415,7 +598,19 @@ function wizard_add() local disablednb = 0 local servers = luci.http.formvaluetable("server") for server, _ in pairs(servers) do - local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" + local serverips = luci.http.formvaluetable("%s.serverip" % server) or {} + local aserverips = {} + for _, ip in pairs(serverips) do + if ip ~= "" and ip ~= nil then + table.insert(aserverips,ip) + end + end + if disableipv6 == "1" then + if table.getn(aserverips) == 2 then + table.remove(aserverips, 2) + end + end + local master = luci.http.formvalue("master") or "" -- OpenMPTCProuter VPS @@ -427,56 +622,176 @@ function wizard_add() ucic:set("openmptcprouter",server,"get_config","1") end ucic:set("openmptcprouter",server,"master","1") + ucic:set("openmptcprouter",server,"current","1") ucic:set("openmptcprouter",server,"backup","0") + ucic:set("xray","omrout","s_shadowsocks_email",openmptcprouter_vps_username:gsub("%s+", "")) else ucic:set("openmptcprouter",server,"get_config","0") ucic:set("openmptcprouter",server,"master","0") + ucic:set("openmptcprouter",server,"current","0") ucic:set("openmptcprouter",server,"backup","1") end if openmptcprouter_vps_disabled == "1" then disablednb = disablednb + 1 end - if server_ip ~= "" then + if next(aserverips) ~= nil then serversnb = serversnb + 1 end ucic:set("openmptcprouter",server,"server") - ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username) - ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key) + ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username:gsub("%s+", "")) + ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key:gsub("%s+", "")) ucic:set("openmptcprouter",server,"disabled",openmptcprouter_vps_disabled) - ucic:set("openmptcprouter",server,"ip",server_ip) + if ucic:get_list("openmptcprouter",server,"ip") ~= aserverips then + ucic:set_list("openmptcprouter",server,"ip",aserverips) + if ucic:get("openmptcprouter",server,"master") == "1" then + ucic:set("openmptcprouter",server,"get_config","1") + end + end ucic:set("openmptcprouter",server,"port","65500") + ucic:set("openmptcprouter",server,"set_firewall","1") + ucic:delete("openmptcprouter",server,"detected_ss_ipv4") + ucic:delete("openmptcprouter",server,"detected_ss_ipv6") + ucic:delete("openmptcprouter",server,"detected_public_ipv4") + ucic:delete("openmptcprouter",server,"detected_public_ipv6") ucic:save("openmptcprouter") end + -- Get VPN used for MPTCP over VPN + local mptcpovervpn_vpn = luci.http.formvalue("mptcpovervpn_vpn") or "wireguard" + ucic:set("openmptcprouter","settings","mptcpovervpn",mptcpovervpn_vpn) + ucic:save("openmptcprouter") + + -- Get Country + local country = luci.http.formvalue("country") or "world" + ucic:set("openmptcprouter","settings","country",country) + ucic:save("openmptcprouter") + + -- Get DNS64 + local dns64 = luci.http.formvalue("dns64") or "0" + ucic:set("openmptcprouter","settings","dns64",dns64) + ucic:save("openmptcprouter") + if dns64 == "1" then + ucic:set("unbound","ub_main","dns64","1") + ucic:set("unbound","ub_main","validator","0") + else + ucic:set("unbound","ub_main","dns64","0") + + end + ucic:save("unbound") + ucic:commit("unbound") + -- Get Proxy set by default - local default_proxy = luci.http.formvalue("default_proxy") or "shadowsocks" + local default_proxy = luci.http.formvalue("default_proxy") or "shadowsocks-rust" if default_proxy == "shadowsocks" and serversnb > 0 and serversnb > disablednb then --ucic:set("shadowsocks-libev","sss0","disabled","0") ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","0") ucic:foreach("shadowsocks-libev", "server", function(s) local sectionname = s[".name"] - ucic:set("shadowsocks-libev",sectionname,"disabled","0") + if sectionname:match("^sss.*") and ucic:get("shadowsocks-libev",sectionname,"server") ~= "" then + ucic:set("shadowsocks-libev",sectionname,"disabled","0") + end + end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) + elseif default_proxy == "shadowsocks-rust" and serversnb > 0 and serversnb > disablednb then + --ucic:set("shadowsocks-libev","sss0","disabled","0") + ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","0") + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") and ucic:get("shadowsocks-rust",sectionname,"server") ~= "" then + ucic:set("shadowsocks-rust",sectionname,"disabled","0") + end end) - elseif default_proxy == "v2ray" and serversnb > 0 and serversnb > disablednb then - --ucic:set("shadowsocks-libev","sss0","disabled","1") - ucic:set("v2ray","main","enabled","1") ucic:foreach("shadowsocks-libev", "server", function(s) local sectionname = s[".name"] ucic:set("shadowsocks-libev",sectionname,"disabled","1") end) + elseif (default_proxy == "v2ray" or default_proxy == "v2ray-vmess" or default_proxy == "v2ray-trojan" or default_proxy == "v2ray-socks") and serversnb > 0 and serversnb > disablednb then + --ucic:set("shadowsocks-libev","sss0","disabled","1") + ucic:set("xray","main","enabled","0") + ucic:set("v2ray","main","enabled","1") + if default_proxy == "v2ray" then + ucic:set("v2ray","omrout","protocol","vless") + elseif default_proxy == "v2ray-vmess" then + ucic:set("v2ray","omrout","protocol","vmess") + elseif default_proxy == "v2ray-trojan" then + ucic:set("v2ray","omrout","protocol","trojan") + elseif default_proxy == "v2ray-socks" then + ucic:set("v2ray","omrout","protocol","socks") + end + ucic:foreach("shadowsocks-libev", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) + elseif (default_proxy == "xray" or default_proxy == "xray-vless-reality" or default_proxy == "xray-vmess" or default_proxy == "xray-trojan" or default_proxy == "xray-shadowsocks" or default_proxy == "xray-socks") and serversnb > 0 and serversnb > disablednb then + --ucic:set("shadowsocks-libev","sss0","disabled","1") + ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","1") + if default_proxy == "xray" then + ucic:set("xray","omrout","protocol","vless") + elseif default_proxy == "xray-vless-reality" then + ucic:set("xray","omrout","protocol","vless-reality") + elseif default_proxy == "xray-vmess" then + ucic:set("xray","omrout","protocol","vmess") + elseif default_proxy == "xray-trojan" then + ucic:set("xray","omrout","protocol","trojan") + elseif default_proxy == "xray-socks" then + ucic:set("xray","omrout","protocol","socks") + elseif default_proxy == "xray-shadowsocks" then + ucic:set("xray","omrout","protocol","shadowsocks") + end + ucic:foreach("shadowsocks-libev", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) else --ucic:set("shadowsocks-libev","sss0","disabled","1") ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","0") ucic:foreach("shadowsocks-libev", "server", function(s) local sectionname = s[".name"] ucic:set("shadowsocks-libev",sectionname,"disabled","1") end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) end ucic:set("openmptcprouter","settings","proxy",default_proxy) ucic:save("openmptcprouter") ucic:save("shadowsocks-libev") + ucic:save("shadowsocks-rust") ucic:save("v2ray") + ucic:save("xray") + ucic:foreach("shadowsocks-libev","server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") then + ucic:delete("shadowsocks-libev",sectionname,"ip") + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + ucic:delete("openmptcprouter","omr","ss_" .. sectionname) + end + end) + ucic:foreach("shadowsocks-rust","server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") then + ucic:delete("shadowsocks-rust",sectionname,"ip") + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + ucic:delete("openmptcprouter","omr","ss_" .. sectionname) + end + end) local ss_servers_nginx = {} local ss_servers_ha = {} @@ -486,14 +801,20 @@ function wizard_add() for server, _ in pairs(servers) do local master = luci.http.formvalue("master") or "" - local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" + local server_ips = luci.http.formvaluetable("%s.serverip" % server) or {} + local server_ip = "" + for _, ip in pairs(server_ips) do + if server_ip == "" and ip ~= "" and ip ~= nil then + server_ip=ip + end + end -- We have an IP, so set it everywhere - if server_ip ~= "" and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then + if server_ip ~= "" and server_ip ~= nil and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then -- Check if we have more than one IP, in this case use Nginx HA if serversnb > 1 then if master == server then ss_ip=server_ip - ucic:set("shadowsocks-libev","sss0","server",server_ip) + --ucic:set("shadowsocks-libev","sss0","server",server_ip) ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun-udp","vpn","host",server_ip) ucic:set("dsvpn","vpn","host",server_ip) @@ -501,10 +822,47 @@ function wizard_add() ucic:set("ubond","general","host",server_ip) ucic:set("v2ray","omrout","s_vmess_address",server_ip) ucic:set("v2ray","omrout","s_vless_address",server_ip) - luci.sys.call("uci -q del openvpn.omr.remote") - luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) + ucic:set("v2ray","omrout","s_trojan_address",server_ip) + ucic:set("v2ray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_vmess_address",server_ip) + ucic:set("xray","omrout","s_vless_address",server_ip) + ucic:set("xray","omrout","s_vless_reality_address",server_ip) + ucic:set("xray","omrout","s_trojan_address",server_ip) + ucic:set("xray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_shadowsocks_address",server_ip) + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + luci.sys.call("uci -q del openvpn." .. sectionname .. ".remote") + luci.sys.call("uci -q add_list openvpn." .. sectionname .. ".remote=" .. server_ip) + end + end) + --luci.sys.call("uci -q del openvpn.omr.remote") + --luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) ucic:set("qos","serverin","srchost",server_ip) ucic:set("qos","serverout","dsthost",server_ip) + local nbip = 0 + for _, ssip in pairs(server_ips) do + ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") + end + ucic:set("shadowsocks-rust","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks-rust" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","0") + end + nbip = nbip + 1 + if disableipv6 == "1" and nbip > 0 then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","1") + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","1") + break + end + end + if nbip == 1 then + --ucic:set("shadowsocks-libev","sss" .. nbip,"server",server_ip) + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","1") + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","1") + end end k = k + 1 ucic:set("nginx-ha","ShadowSocks","enable","0") @@ -515,7 +873,7 @@ function wizard_add() ucic:set("openmptcprouter","settings","ha","0") ucic:set("nginx-ha","ShadowSocks","enable","0") ucic:set("nginx-ha","VPN","enable","0") - ucic:set("shadowsocks-libev","sss0","server",server_ip) + --ucic:set("shadowsocks-libev","sss0","server",server_ip) ucic:set("glorytun","vpn","host",server_ip) ucic:set("glorytun-udp","vpn","host",server_ip) ucic:set("dsvpn","vpn","host",server_ip) @@ -523,10 +881,45 @@ function wizard_add() ucic:set("ubond","general","host",server_ip) ucic:set("v2ray","omrout","s_vmess_address",server_ip) ucic:set("v2ray","omrout","s_vless_address",server_ip) - luci.sys.call("uci -q del openvpn.omr.remote") - luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) + ucic:set("v2ray","omrout","s_trojan_address",server_ip) + ucic:set("v2ray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_vmess_address",server_ip) + ucic:set("xray","omrout","s_vless_address",server_ip) + ucic:set("xray","omrout","s_vless_reality_address",server_ip) + ucic:set("xray","omrout","s_trojan_address",server_ip) + ucic:set("xray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_shadowsocks_address",server_ip) + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + luci.sys.call("uci -q del openvpn." .. sectionname .. ".remote") + luci.sys.call("uci -q add_list openvpn." .. sectionname .. ".remote=" .. server_ip) + end + end) + --luci.sys.call("uci -q del openvpn.omr.remote") + --luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) ucic:set("qos","serverin","srchost",server_ip) ucic:set("qos","serverout","dsthost",server_ip) + local nbip = 0 + for _, ssip in pairs(server_ips) do + ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") + end + ucic:set("shadowsocks-rust","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks-rust" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","0") + end + nbip = nbip + 1 + if disableipv6 == "1" and nbip > 0 then + break + end + end + if nbip == 1 then + -- ucic:set("shadowsocks-libev","sss" .. nbip,"server",server_ip) + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","1") + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","1") + end end end end @@ -540,6 +933,7 @@ function wizard_add() ucic:save("mlvpn") ucic:save("ubond") ucic:save("v2ray") + ucic:save("xray") --ucic:commit("mlvpn") ucic:save("dsvpn") --ucic:commit("dsvpn") @@ -547,42 +941,126 @@ function wizard_add() ucic:save("glorytun-udp") --ucic:commit("glorytun") ucic:save("shadowsocks-libev") + ucic:save("shadowsocks-rust") --ucic:commit("shadowsocks-libev") local encryption = luci.http.formvalue("encryption") if encryption == "none" then + ucic:set("openmptcprouter","settings","encryption","none") ucic:set("shadowsocks-libev","sss0","method","none") - ucic:set("openvpn","omr","cipher","none") + ucic:set("shadowsocks-libev","sss1","method","none") + ucic:set("shadowsocks-rust","sss0","method","none") + ucic:set("shadowsocks-rust","sss1","method","none") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","none") + end + end) + --ucic:set("openvpn","omr","cipher","none") + ucic:set("mlvpn","general","cleartext_data","1") ucic:set("v2ray","omrout","s_vmess_user_security","none") ucic:set("v2ray","omrout","s_vless_user_security","none") + ucic:set("v2ray","omrout","s_trojan_user_security","none") + ucic:set("v2ray","omrout","s_socks_user_security","none") + ucic:set("xray","omrout","s_vmess_user_security","none") + ucic:set("xray","omrout","s_vless_user_security","none") + ucic:set("xray","omrout","s_vless_reality_user_security","none") + ucic:set("xray","omrout","s_trojan_user_security","none") + ucic:set("xray","omrout","s_socks_user_security","none") + --ucic:set("xray","omrout","s_shadowsocks_method","none") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") elseif encryption == "aes-256-gcm" then + ucic:set("openmptcprouter","settings","encryption","aes-256-gcm") ucic:set("shadowsocks-libev","sss0","method","aes-256-gcm") + ucic:set("shadowsocks-libev","sss1","method","aes-256-gcm") ucic:set("glorytun","vpn","chacha20","0") ucic:set("glorytun-udp","vpn","chacha","0") - ucic:set("openvpn","omr","cipher","AES-256-GCM") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","AES-256-GCM") + end + end) + --ucic:set("openvpn","omr","cipher","AES-256-GCM") + ucic:set("mlvpn","general","cleartext_data","0") ucic:set("v2ray","omrout","s_vmess_user_security","aes-128-gcm") ucic:set("v2ray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vmess_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_reality_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss0","method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss1","method","2022-blake3-aes-256-gcm") elseif encryption == "aes-256-cfb" then + ucic:set("openmptcprouter","settings","encryption","aes-256-cfb") ucic:set("shadowsocks-libev","sss0","method","aes-256-cfb") + ucic:set("shadowsocks-libev","sss1","method","aes-256-cfb") ucic:set("glorytun","vpn","chacha20","0") ucic:set("glorytun-udp","vpn","chacha","0") - ucic:set("openvpn","omr","cipher","AES-256-CFB") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","AES-256-CFB") + end + end) + --ucic:set("openvpn","omr","cipher","AES-256-CFB") + ucic:set("mlvpn","general","cleartext_data","0") ucic:set("v2ray","omrout","s_vmess_user_security","aes-128-gcm") ucic:set("v2ray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vmess_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_reality_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss0","method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss1","method","2022-blake3-aes-256-gcm") elseif encryption == "chacha20-ietf-poly1305" then + ucic:set("openmptcprouter","settings","encryption","chacha20") ucic:set("shadowsocks-libev","sss0","method","chacha20-ietf-poly1305") + ucic:set("shadowsocks-libev","sss1","method","chacha20-ietf-poly1305") ucic:set("glorytun","vpn","chacha20","1") ucic:set("glorytun-udp","vpn","chacha","1") - ucic:set("openvpn","omr","cipher","AES-256-CBC") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","chacha20-poly1305") + end + end) + --ucic:set("openvpn","omr","cipher","chacha20-poly1305") + ucic:set("mlvpn","general","cleartext_data","0") ucic:set("v2ray","omrout","s_vmess_user_security","chacha20-poly1305") ucic:set("v2ray","omrout","s_vless_user_security","chacha20-poly1305") + ucic:set("v2ray","omrout","s_trojan_user_security","chacha20-poly1305") + ucic:set("v2ray","omrout","s_socks_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_vmess_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_vless_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_vless_reality_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_trojan_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_socks_user_security","chacha20-poly1305") + --ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-chacha20-poly1305") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") + --ucic:set("shadowsocks-rust","sss0","method","2022-blake3-chacha20-poly1305") + --ucic:set("shadowsocks-rust","sss1","method","2022-blake3-chacha20-poly1305") + ucic:set("shadowsocks-rust","sss0","method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss1","method","2022-blake3-aes-256-gcm") + else + ucic:set("openmptcprouter","settings","encryption","other") end ucic:save("openvpn") ucic:save("glorytun") ucic:save("glorytun-udp") ucic:save("shadowsocks-libev") ucic:save("v2ray") + ucic:save("xray") -- Set ShadowSocks settings local shadowsocks_key = luci.http.formvalue("shadowsocks_key") @@ -592,28 +1070,79 @@ function wizard_add() --end if shadowsocks_key ~= "" then ucic:set("shadowsocks-libev","sss0","key",shadowsocks_key) + ucic:set("shadowsocks-libev","sss1","key",shadowsocks_key) --ucic:set("shadowsocks-libev","sss0","method","chacha20-ietf-poly1305") --ucic:set("shadowsocks-libev","sss0","server_port","65101") --ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable) ucic:save("shadowsocks-libev") ucic:commit("shadowsocks-libev") if shadowsocks_disable == "1" then - luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/shadowsocks-libev rules_down >/dev/null 2>/dev/null") end else if serversnb == 0 then - ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable) + ucic:set("shadowsocks-libev","sss0","disabled","1") + ucic:set("shadowsocks-libev","sss1","disabled","1") end ucic:set("shadowsocks-libev","sss0","key","") + ucic:set("shadowsocks-libev","sss1","key","") ucic:save("shadowsocks-libev") ucic:commit("shadowsocks-libev") - luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/shadowsocks-libev rules_down >/dev/null 2>/dev/null") end + -- Set ShadowSocks 2022 settings + local shadowsocks2022_key = luci.http.formvalue("shadowsocks2022_key") + if shadowsocks2022_key ~= "" then + ucic:set("shadowsocks-rust","sss0","password",shadowsocks2022_key) + ucic:set("shadowsocks-rust","sss1","password",shadowsocks2022_key) + ucic:set("xray","omrout","s_shadowsocks_password",shadowsocks2022_key) + ucic:save("shadowsocks-rust") + ucic:commit("shadowsocks-rust") + if shadowsocks_disable == "1" then + luci.sys.call("/etc/init.d/shadowsocks-rust rules_down >/dev/null 2>/dev/null") + end + else + if serversnb == 0 then + ucic:set("shadowsocks-rust","sss0","disabled","1") + ucic:set("shadowsocks-rust","sss1","disabled","1") + end + ucic:set("shadowsocks-rust","sss0","password","") + ucic:set("shadowsocks-rust","sss1","password","") + ucic:set("xray","omrout","s_shadowsocks_password","") + ucic:save("shadowsocks-rust") + ucic:commit("shadowsocks-rust") + luci.sys.call("/etc/init.d/shadowsocks-rust rules_down >/dev/null 2>/dev/null") + end + + -- Enable/disable v2ray/xray udp + local v2rayudp = luci.http.formvalue("v2rayudp") or "0" + ucic:set("v2ray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("v2ray") + ucic:commit("v2ray") + ucic:set("xray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("xray") + ucic:commit("xray") + local v2ray_user = luci.http.formvalue("v2ray_user") ucic:set("v2ray","omrout","s_vmess_user_id",v2ray_user) ucic:set("v2ray","omrout","s_vless_user_id",v2ray_user) + ucic:set("v2ray","omrout","s_trojan_user_id",v2ray_user) + ucic:set("v2ray","omrout","s_socks_user_id",v2ray_user) ucic:save("v2ray") ucic:commit("v2ray") + local xray_user = luci.http.formvalue("xray_user") + ucic:set("xray","omrout","s_vmess_user_id",xray_user) + ucic:set("xray","omrout","s_vless_user_id",xray_user) + ucic:set("xray","omrout","s_vless_reality_user_id",xray_user) + ucic:set("xray","omrout","s_trojan_user_id",xray_user) + ucic:set("xray","omrout","s_socks_user_id",xray_user) + ucic:save("xray") + ucic:commit("xray") + + ucic:save("shadowsocks-libev") + ucic:commit("shadowsocks-libev") + ucic:save("shadowsocks-rust") + ucic:commit("shadowsocks-rust") -- Set Glorytun settings @@ -676,7 +1205,7 @@ function wizard_add() local dsvpn_key = luci.http.formvalue("dsvpn_key") if dsvpn_key ~= "" then - ucic:set("dsvpn","vpn","port","65011") + ucic:set("dsvpn","vpn","port","65401") ucic:set("dsvpn","vpn","key",dsvpn_key) ucic:set("dsvpn","vpn","localip","10.255.251.2") ucic:set("dsvpn","vpn","remoteip","10.255.251.1") @@ -723,7 +1252,7 @@ function wizard_add() local ubond_password = luci.http.formvalue("ubond_password") if ubond_password ~= "" then ucic:set("ubond","general","password",ubond_password) - ucic:set("ubond","general","firstport","65201") + ucic:set("ubond","general","firstport","65251") ucic:set("ubond","general","interface_name","ubond0") else --ucic:set("ubond","general","enable",0) @@ -733,16 +1262,42 @@ function wizard_add() ucic:commit("ubond") if default_vpn == "openvpn" and disablednb ~= serversnb then - ucic:set("openvpn","omr","enabled",1) - ucic:set("network","omrvpn","proto","none") + if ucic:get("openmptcprouter","settings","openvpn_lb") == "0" then + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"enabled",0) + ucic:set("network",sectionname,"proto","none") + end + end) + ucic:set("openvpn","omr","enabled",1) + else + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"enabled",1) + ucic:set("network",sectionname,"proto","none") + end + end) + --ucic:set("openvpn","omr","enabled",1) + end + --ucic:set("network","omrvpn","proto","none") else - ucic:set("openvpn","omr","enabled",0) + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:delete("openvpn",sectionname,"enabled") + end + end) + --ucic:delete("openvpn","omr","enabled") end ucic:save("openvpn") ucic:commit("openvpn") ucic:save("v2ray") ucic:commit("v2ray") + ucic:save("xray") + ucic:commit("xray") ucic:save("network") ucic:commit("network") @@ -761,8 +1316,9 @@ function wizard_add() -- Restart all menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" if gostatus == true then - luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + --luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") + luci.sys.call("ip addr flush dev tun0 >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/omr-tracker stop >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/mptcp restart >/dev/null 2>/dev/null") --if openmptcprouter_vps_key ~= "" then @@ -770,18 +1326,24 @@ function wizard_add() -- luci.sys.call("sleep 2") --end luci.sys.call("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/shadowsocks-rust restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null") - --luci.sys.call("/etc/init.d/ubond restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/ubond restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/mptcpovervpn restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/openvpn restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/openvpnbonding restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/dsvpn restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/omr-tracker start >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/mptcpovervpn restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/v2ray restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/xray restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/sqm restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-bypass restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/sqm-autorate restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/sysntpd restart >/dev/null 2>/dev/null") luci.http.redirect(luci.dispatcher.build_url("admin/system/" .. menuentry:lower() .. "/status")) else luci.http.redirect(luci.dispatcher.build_url("admin/system/" .. menuentry:lower() .. "/wizard")) @@ -847,13 +1409,42 @@ function settings_add() ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6) --local dump = require("luci.util").ubus("openmptcprouter", "disableipv6", { disable_ipv6 = tonumber(disable_ipv6)}) + -- Disable 6in4 + local disable_6in4 = luci.http.formvalue("enable6in4") or "0" + ucic:set("openmptcprouter","settings","disable_6in4",disable_6in4) + + -- Disable ModemManager + local disable_modemmanager = luci.http.formvalue("disablemodemmanager") or "0" + ucic:set("openmptcprouter","settings","disable_modemmanager",disable_modemmanager) + if disable_modemmanager == "1" then + luci.sys.exec("/etc/init.d/modemmanager stop") + end + -- Enable/disable external check local externalcheck = luci.http.formvalue("externalcheck") or "1" ucic:set("openmptcprouter","settings","external_check",externalcheck) + -- Enable/disable OpenVPN multiple clients + local openvpnlb = luci.http.formvalue("openvpnlb") or "1" + if ucic:get("openmptcprouter","settings","openvpn_lb") ~= openvpnlb then + ucic:set("openmptcprouter","settings","openvpn_lb",openvpnlb) + ucic:foreach("openmptcprouter", "server", function(s) + local sectionname = s[".name"] + ucic:set("openmptcprouter",sectionname,"get_config","1") + end) + + end + + -- Enable/disable restrict proxy to LAN + local restricttolan = luci.http.formvalue("restricttolan") or "0" + ucic:set("openmptcprouter","settings","restrict_to_lan",restricttolan) + -- Enable/disable debug local debug = luci.http.formvalue("debug") or "0" ucic:set("openmptcprouter","settings","debug",debug) + ucic:foreach("shadowsocks-libev", "ss_redir", function (section) + ucic:set("shadowsocks-libev",section[".name"],"verbose",debug) + end) -- Enable/disable vnstat backup local savevnstat = luci.http.formvalue("savevnstat") or "0" @@ -864,22 +1455,67 @@ function settings_add() local disablegwping = luci.http.formvalue("disablegwping") or "0" ucic:set("openmptcprouter","settings","disablegwping",disablegwping) + -- VPS timeout + local status_vps_timeout = luci.http.formvalue("status_vps_timeout") or "1" + ucic:set("openmptcprouter","settings","status_vps_timeout",status_vps_timeout) + + -- IP timeout + local status_getip_timeout = luci.http.formvalue("status_getip_timeout") or "1" + ucic:set("openmptcprouter","settings","status_getip_timeout",status_getip_timeout) + + -- Whois timeout + local status_whois_timeout = luci.http.formvalue("status_whois_timeout") or "2" + ucic:set("openmptcprouter","settings","status_whois_timeout",status_whois_timeout) + + -- Enable/disable loop detection + local disableloopdetection = luci.http.formvalue("disableloopdetection") or "0" + ucic:set("openmptcprouter","settings","disableloopdetection",disableloopdetection) + + -- Enable/disable http test + local disableserverhttptest = luci.http.formvalue("disableserverhttptest") or "0" + ucic:set("openmptcprouter","settings","disableserverhttptest",disableserverhttptest) + + -- Enable/disable renaming intf + local disableintfrename = luci.http.formvalue("disableintfrename") or "0" + ucic:set("openmptcprouter","settings","disableintfrename",disableintfrename) + -- Enable/disable default gateway local disabledefaultgw = luci.http.formvalue("disabledefaultgw") or "1" ucic:set("openmptcprouter","settings","defaultgw",disabledefaultgw) -- Enable/disable tracebox - local tracebox = luci.http.formvalue("tracebox") or "1" + local tracebox = luci.http.formvalue("disabletracebox") or "1" ucic:set("openmptcprouter","settings","tracebox",tracebox) + -- Enable/disable ModemManager + local modemmanager = luci.http.formvalue("disablemodemmanager") or "1" + ucic:set("openmptcprouter","settings","modemmanager",modemmanager) + -- Enable/disable server ping local disableserverping = luci.http.formvalue("disableserverping") or "0" ucic:set("openmptcprouter","settings","disableserverping",disableserverping) - -- Enable/disable shadowsocks upd + -- Enable/disable multipath check + local disablemultipathtest = luci.http.formvalue("disablemultipathtest") or "0" + ucic:set("openmptcprouter","settings","disablemultipathtest",disablemultipathtest) + + -- Enable/disable shadowsocks udp local shadowsocksudp = luci.http.formvalue("shadowsocksudp") or "0" ucic:set("openmptcprouter","settings","shadowsocksudp",shadowsocksudp) + -- Enable/disable v2ray/xray udp + local v2rayudp = luci.http.formvalue("v2rayudp") or "0" + ucic:set("v2ray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("v2ray") + ucic:commit("v2ray") + ucic:set("xray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("xray") + ucic:commit("xray") + + -- Enable/disable nDPI + local ndpi = luci.http.formvalue("ndpi") or "1" + ucic:set("openmptcprouter","settings","ndpi",ndpi) + -- Enable/disable fast open local disablefastopen = luci.http.formvalue("disablefastopen") or "0" if disablefastopen == "0" then @@ -941,11 +1577,22 @@ function settings_add() ucic:set("openmptcprouter","settings","scaling_governor",scaling_governor) end + -- Enable/disable Qualcomm Shortcut FE + local sfe_enabled = luci.http.formvalue("sfe_enabled") or "0" + ucic:set("openmptcprouter","settings","sfe_enabled",sfe_enabled) + local sfe_bridge = luci.http.formvalue("sfe_bridge") or "0" + ucic:set("openmptcprouter","settings","sfe_bridge",sfe_bridge) + + -- Enable/disable SIP ALG + local sipalg = luci.http.formvalue("sipalg") or "0" + ucic:set("openmptcprouter","settings","sipalg",sipalg) + ucic:save("openmptcprouter") ucic:commit("openmptcprouter") -- Apply all settings luci.sys.call("/etc/init.d/openmptcprouter restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/openmptcprouter-vps set_vps_firewall >/dev/null 2>/dev/null") luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") -- Done, redirect @@ -959,7 +1606,7 @@ function update_vps() local update_vps = luci.http.formvalue("flash") or "" if update_vps ~= "" then local ut = require "luci.util" - local result = ut.ubus("openmptcprouter", "update_vps", {}) + local result = ut.ubus("openmptcprouter", "updateVPS", {}) end return end @@ -967,7 +1614,18 @@ end function backupgr() local get_backup = luci.http.formvalue("restore") or "" if get_backup ~= "" then - luci.sys.call("/etc/init.d/openmptcprouter-vps backup_get >/dev/null 2>/dev/null") + local dobackup = 0 + ucic:foreach("openmptcprouter","server", function(s) + servername = s[".name"] + local get_selected_backup = luci.http.formvalue(servername .. "") or "" + if get_selected_backup ~= "" then + dobackup = 1 + luci.sys.call("/etc/init.d/openmptcprouter-vps backup_get " .. servername .. " " .. get_selected_backup .. ">/dev/null 2>/dev/null") + end + end) + if dobackup == 0 then + luci.sys.call("/etc/init.d/openmptcprouter-vps backup_get >/dev/null 2>/dev/null") + end end local send_backup = luci.http.formvalue("save") or "" if send_backup ~= "" then @@ -981,7 +1639,13 @@ end function get_device(interface) local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) if dump ~= nil then - return dump['l3_device'] + if dump['l3_device'] ~= nil then + return dump['l3_device'] + elseif dump['device'] ~= nil then + return dump['device'] + else + return "" + end else return "" end diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm index f7ebf5bb0..0b66c1662 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm @@ -16,10 +16,36 @@ menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" %>

<%=servername%>

<% - if luci.model.uci.cursor():get("openmptcprouter",servername,"lastbackup") ~= nil then + if luci.model.uci.cursor():get("openmptcprouter",servername,"allbackup") ~= nil then %>
- <%:Last available backup on server:%> <%=os.date('%d-%b-%Y', luci.model.uci.cursor():get("openmptcprouter",servername,"lastbackup"))%> +
+ +
+ +
+
+
+ <% + elseif luci.model.uci.cursor():get("openmptcprouter",servername,"lastbackup") ~= nil then + %> +
+ <%:Last available backup on server:%> <%=os.date('%c', luci.model.uci.cursor():get("openmptcprouter",servername,"lastbackup"))%>
<% else %>
@@ -29,6 +55,7 @@ menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" <% end) %> +
diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm index 8a5f894c4..96db8aaa9 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm @@ -4,7 +4,7 @@

<%:All router settings%>

-
<%=luci.sys.exec("uci show")%>
+
<%=luci.sys.exec("sh /bin/anonymous_config.sh")%>
<%+footer%> diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index 50c4ccce3..0eb974a41 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -17,9 +17,9 @@ %>
-

<%:Update VPS%>

+

<%:Update server%>

-
<%:Update remotly the server to latest version when needed.%> <%:Beta%>
+
<%:Update remotly servers to latest version and reboot them.%> <%:Beta%>
@@ -40,7 +40,7 @@

<%:Advanced Settings%>

- <%:VPS settings%> + <%:Server settings%> <% uci:foreach("openmptcprouter","server", function(s) servername = s[".name"] @@ -97,7 +97,7 @@ end if obfs_installed then %> - + <% end %> @@ -108,8 +108,8 @@
@@ -189,6 +189,12 @@ checked<% end %>>
+
+ +
+ checked<% end %>> +
+
@@ -219,6 +225,12 @@
+
+ +
+ checked<% end %>> +
+

@@ -240,14 +252,85 @@ checked<% end %>>
- <%:Disable gateway ping status check%> + <%:Disable gateway ping check in status page%>
- + +
+ checked<% end %>> +
+
+ <%:Disable HTTP test on Server API%> +
+
+
+
+ +
+ "> +
+
+ <%:Timeout for VPS checks on status pages%> +
+
+
+
+ +
+ "> +
+
+ <%:Timeout for retrieving WANs IP on status pages%> +
+
+
+
+ +
+ "> +
+
+ <%:Timeout for retrieving Whois WANs IP on status pages%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable renaming interfaces%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ +
+
checked<% end %>> +
+
+ <%:When proxy shadowsocks is used, use it for UDP if VPN down%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:When proxy V2Ray/XRay VLESS, VMESS or Trojan is used, use it for UDP%> +
@@ -270,6 +353,36 @@
+
+ +
+ checked<% end %>> +
+
+ <%:Authorize access to proxy only from LAN firewall zone%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable route loop detection%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable OpenVPN multi clients to distribute connections and use more CPU cores%> +
+
+
@@ -280,6 +393,38 @@
+
+ +
+ checked<% end %>> +
+
+ <%:Disable multipath test display in status page%> +
+
+
+ +
+ +
+ checked<% end %>> +
+
+ <%:Disable ModemManager%> +
+
+
@@ -290,6 +435,7 @@
+ + <% + if nixio.fs.access("/lib/modules/" .. nixio.uname().release .. "/shortcut-fe.ko") then + %> +
+
+ <%:Qualcomm Shortcut FE driver%> +
+
+ +
+ checked<% end %>> +
+
+
+ +
+ checked<% end %>> +
+
+
+ <% end %> + <% if nixio.fs.access("/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq") then %>
<%:Systems settings%> diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index b35f3344f..224ff07a6 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -19,7 +19,7 @@ -- along with OverTheBox. If not, see (http://www.gnu.org/licenses/) -%> <% --- Copyright 2018-2020 Ycarus (Yannick Chabanois) ycarus@zugaina.org for OpenMPTCProuter +-- Copyright 2018-2022 Ycarus (Yannick Chabanois) ycarus@zugaina.org for OpenMPTCProuter -- -- Small changes to make this work with OpenMPTCProuter -- New features: @@ -101,7 +101,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm temp += '
  • \s*$/g,ra={option:[1,""],legend:[1,"",""],area:[1,"",""],param:[1,"",""],thead:[1,"
    '; if (mArray.wans) { - temp += ''; + temp += ''; for( var j = 1; j < mArray.wans.length; j++ ) { temp += ''; @@ -132,7 +132,12 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm } if (mArray.openmptcprouter.core_temp) { - content += '<%:Core temp:%>' + " " + (mArray.openmptcprouter.core_temp / 1000).toFixed(1) + " °"; + if (mArray.openmptcprouter.core_temp > 100000) + { + content += '<%:Core temp:%>' + " " + (mArray.openmptcprouter.core_temp / 10000).toFixed(1) + " °"; + } else { + content += '<%:Core temp:%>' + " " + (mArray.openmptcprouter.core_temp / 1000).toFixed(1) + " °"; + } content += "
    "; } if (mArray.openmptcprouter.uptime) @@ -163,6 +168,18 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessage += '
    '; } } + if (mArray.openmptcprouter.shadowsocksrust_enabled == true && mArray.openmptcprouter.service_addr != "") + { + if (mArray.openmptcprouter.shadowsocksrust_service == false) + { + statusMessage += '<%:ShadowSocks Rust is not running%>'; + if (mArray.openmptcprouter.shadowsocksrust_service_key == false && mArray.openmptcprouter.shadowsocksrust_service_method !== "none") + { + statusMessage += ' (' + '<%:empty key%>' + ')'; + } + statusMessage += '
    '; + } + } if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.service_addr != "") { if (mArray.openmptcprouter.v2ray_service == false) @@ -171,6 +188,14 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessage += '
    '; } } + if (mArray.openmptcprouter.xray_enabled == true && mArray.openmptcprouter.service_addr != "") + { + if (mArray.openmptcprouter.xray_service == false) + { + statusMessage += '<%:XRay is not running%>'; + statusMessage += '
    '; + } + } if (mArray.openmptcprouter.fsro == true) { statusMessage += '<%:Filesystem is readonly%>' + '
    '; @@ -194,7 +219,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png"; } else if (mArray.openmptcprouter.service_addr != "") { - if (mArray.openmptcprouter.v2ray_enabled == false && mArray.openmptcprouter.shadowsocks_enabled == false) + if (mArray.openmptcprouter.xray_enabled == false && mArray.openmptcprouter.v2ray_enabled == false && mArray.openmptcprouter.shadowsocks_enabled == false && mArray.openmptcprouter.shadowsocksrust_enabled == false) { statusMessage += '<%:Proxy is DISABLED%>' + '
    '; } @@ -207,7 +232,7 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if (mArray.openmptcprouter.tun6_state == "DOWN") { statusMessage += '<%:IPv6 tunnel DOWN%>' + '
    '; - } else if (mArray.openmptcprouter.wan_addr6 == '') + } else if (mArray.openmptcprouter.wan_addr6 == '' && mArray.openmptcprouter.dns_filter_aaaa == false) { statusMessage += '<%:No IPv6 access%>' + '
    '; } @@ -231,28 +256,45 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if ((mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr == mArray.openmptcprouter.service_addr_ip) && mArray.openmptcprouter.wan_addr != "") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); + } else if ((mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr || mArray.openmptcprouter.wan_addr6 == mArray.openmptcprouter.service_addr_ip6) && mArray.openmptcprouter.wan_addr6 != "") + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") { var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); - } else if (mArray.openmptcprouter.wan_addr != "") + } else if (mArray.openmptcprouter.wan_addr6 != "" && mArray.openmptcprouter.service_addr == "127.0.0.1") + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); + } else if (mArray.openmptcprouter.wan_addr6 != "" && mArray.openmptcprouter.direct_output == false) + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr6); + } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.direct_output == false) + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.wan_addr); + } else if (mArray.openmptcprouter.wan_addr != "" && mArray.openmptcprouter.direct_output == true) { var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr); statusMessageClass = "warning"; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; - } else if (mArray.openmptcprouter.ss_addr != "" && mArray.openmptcprouter.vps_status != "DOWN") + } else if (mArray.openmptcprouter.wan_addr6 != "" && mArray.openmptcprouter.direct_output == true) { - var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.ss_addr); + var title = String.format("%s (%s)", _('Direct output'), mArray.openmptcprouter.wan_addr6); + statusMessageClass = "warning"; + statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; + } else if (mArray.openmptcprouter.proxy_addr != "" && mArray.openmptcprouter.vps_status != "DOWN") + { + var title = String.format("%s (%s)", mArray.openmptcprouter.vps_hostname, mArray.openmptcprouter.proxy_addr); } else if (mArray.openmptcprouter.external_check == false) { var title = String.format("%s ?", mArray.openmptcprouter.vps_hostname); } else { var title = '<%:No output%>'; statusMessage += '<%:No output%>' + '
    '; } - if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true) { - statusMessage += '<%:No server IP address, No WAN IP address%>' + '
    '; + statusMessage += '<%:No server IP address, No public IP address%>' + '
    '; } - if (mArray.openmptcprouter.service_addr !== "" && mArray.openmptcprouter.wan_addr !== "" && mArray.openmptcprouter.vps_status == "DOWN") + if (mArray.openmptcprouter.service_addr !== "" && (mArray.openmptcprouter.wan_addr !== "" || mArray.openmptcprouter.wan_addr6 !== "") && mArray.openmptcprouter.vps_status == "DOWN") { statusMessage += '<%:Can\'t access and use server part%>' + '
    '; } @@ -268,15 +310,21 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if (mArray.openmptcprouter.vps_status == "DOWN") { statusMessage += '<%:Can\'t ping server%>' + '
    '; - } else if (mArray.openmptcprouter.shadowsocks_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + } else if (mArray.openmptcprouter.shadowsocks_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:Can\'t get public IP address from ShadowSocks%>' + '
    '; - } else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.ss_addr == "" && mArray.openmptcprouter.external_check == true) + } else if (mArray.openmptcprouter.shadowsocksrust_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true) + { + statusMessage += '<%:Can\'t get public IP address from ShadowSocks Rust%>' + '
    '; + } else if (mArray.openmptcprouter.v2ray_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true) { statusMessage += '<%:Can\'t get public IP address from V2Ray%>' + '
    '; - } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.external_check == true) + } else if (mArray.openmptcprouter.xray_enabled == true && mArray.openmptcprouter.proxy_addr == "" && mArray.openmptcprouter.external_check == true) { - statusMessage += '<%:No WAN IP address detected in less than 1 second%>' + '
    '; + statusMessage += '<%:Can\'t get public IP address from XRay%>' + '
    '; + } else if (mArray.openmptcprouter.wan_addr == "" && mArray.openmptcprouter.wan_addr6 == "" && mArray.openmptcprouter.external_check == true) + { + statusMessage += '<%:No public IP address detected in less than 1 second%>' + '
    '; } if (mArray.openmptcprouter.vps_admin == false) { @@ -293,7 +341,9 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm } if (mArray.openmptcprouter.vps_time_accurate == false) { - statusMessage += '<%:Big time difference between the server and the router%>' + '
    '; + var vps_time = new Date(mArray.openmptcprouter.vps_time*1000).toISOString(); + var omr_time = new Date(mArray.openmptcprouter.omr_time*1000).toISOString(); + statusMessage += '<%:Big time difference between the server and the router%> (' + vps_time + '/' + omr_time + ')
    '; } } if (statusMessage !== "" && statusMessageClass !== "error") @@ -331,6 +381,12 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessageClass = "warning"; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; } + if (mArray.openmptcprouter.kernel_match == false) + { + statusMessage += '<%:MPTCP kernel on router and VPS doesn't match%>' + '
    '; + statusMessageClass = "warning"; + statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; + } if (mArray.openmptcprouter.wan_addr6) { content += '<%:IPv6:%>' + " " + mArray.openmptcprouter.wan_addr6; @@ -384,31 +440,53 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessageClass = "error"; statusMessage = ""; break; + case 'WARNING': + stat = 'Warning'; + cssc = 'rgb(144, 240, 144)'; + statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; + statusMessageClass = "warning"; + statusMessage = "Some connectivity tests failed" + '
    '; + break; default: stat = 'Unknown'; cssc = 'rgb(144, 240, 144)'; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; statusMessageClass = "warning"; - statusMessage = ""; + statusMessage = "Unknown status (" + mArray.wans[i].status + ")" + '
    '; } // Populate info - var wanip = mArray.wans[i].wanip; + var wanip = mArray.wans[i].wanip; if (anonymize == "true" && testPrivateIP(wanip) == false) { wanip=replaceLastNChars(wanip,"x",6); } - var ipaddr = mArray.wans[i].ipaddr; + var wanip6 = mArray.wans[i].wanip6; + if (anonymize == "true") + { + wanip6=replaceLastNChars(wanip6,"x",6); + } + var ipaddr = mArray.wans[i].ipaddr; if (anonymize == "true" && testPrivateIP(ipaddr) == false) { ipaddr=replaceLastNChars(ipaddr,"x",6); } - var whois = mArray.wans[i].whois; - var signal = mArray.wans[i].signal; + var ip6addr = mArray.wans[i].ip6addr; + if (anonymize == "true") + { + ip6addr=replaceLastNChars(ip6addr,"x",6); + } + var ifname = mArray.wans[i].ifname; + var iftype = mArray.wans[i].iftype; + var whois = mArray.wans[i].whois; + var whois6 = mArray.wans[i].whois6; + var signal = mArray.wans[i].signal; + var istatus = mArray.wans[i].status; var multipath = mArray.wans[i].multipath; if(multipath == 'master') { master++; } + var zonewan = mArray.wans[i].zonewan; var latency = mArray.wans[i].latency; var mtu = mArray.wans[i].mtu; var operator = mArray.wans[i].operator; @@ -420,12 +498,21 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { gateway=replaceLastNChars(gateway,"x",6); } + var gateway6 = mArray.wans[i].gateway6; + if (anonymize == "true" && testPrivateIP(gateway6) == false) + { + gateway6=replaceLastNChars(gateway6,"x",10); + } var gw_ping = mArray.wans[i].gw_ping; + var gw_ping6 = mArray.wans[i].gw_ping6; var server_ping = mArray.wans[i].server_ping; + var server_http = mArray.wans[i].server_http; var ipv6_discover = mArray.wans[i].ipv6_discover; var multipath_available = mArray.wans[i].multipath_available; var multipath_state = mArray.wans[i].multipath_state; var duplicateif = mArray.wans[i].duplicateif; + var duplicatemac = mArray.wans[i].duplicatemac; + var loop = mArray.wans[i].loop; // Generate template if(mArray.openmptcprouter.remote_from_lease == true && mArray.wans.length == 1) { @@ -438,6 +525,9 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm if (mArray.wans[i].gateway !== "") { var title = mArray.wans[i].label + " (" + gateway + ")"; + } else if (mArray.wans[i].gateway6 !== "") + { + var title = mArray.wans[i].label + " (" + gateway6 + ")"; } else { var title = mArray.wans[i].label; } @@ -446,14 +536,30 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { content += String.format('%s %s
    ','<%:ip address:%>', ipaddr); } + if(ip6addr !== '' && gateway6 !== '') + { + content += String.format('%s %s
    ','<%:ipv6 address:%>', ip6addr); + } if(wanip !== '') { content += String.format('%s %s
    ','<%:wan address:%>', wanip); } + if(wanip6 !== '') + { + content += String.format('%s %s
    ','<%:wan ipv6 address:%>', wanip6); + } + if(ifname !== '' && ifname !== mArray.wans[i].label) + { + content += String.format('%s %s
    ','<%:interface:%>', ifname); + } if(whois !== '') { content += String.format('%s %s
    ','<%:whois:%>', whois); } + if(whois6 !== '' && whois6 != whois) + { + content += String.format('%s %s
    ','<%:whois:%>', whois6); + } if(latency !== '') { content += String.format('%s %s ms
    ','<%:latency:%>', latency); @@ -492,16 +598,19 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { title += String.format(' %s',networktype); } - if(ipaddr == '') + if(ipaddr == '' && ip6addr == '') { statusMessage += '<%:No IP defined%>' + '
    '; } - if(gateway == '') + if(gateway == '' && gateway6 == '') { statusMessage += '<%:No gateway defined%>' + '
    '; - } else if(gw_ping == 'DOWN') + } else if(gateway != '' && gw_ping == 'DOWN') { statusMessage += '<%:Gateway DOWN%>' + '
    '; + } else if(gateway6 != '' && gw_ping6 == 'DOWN') + { + statusMessage += '<%:Gateway IPv6 DOWN%>' + '
    '; } else if(multipath_available == 'ERROR') { statusMessage += '<%:Multipath seems to be blocked on the connection%>' + '
    '; @@ -510,7 +619,21 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm { statusMessage += '<%:No Server ping response after 1 second%>' + '
    '; } - if (stat == 'Offline' && ipaddr != '' && ipaddr == mArray.wans[i].gateway) + if(server_http == 'DOWN' && mArray.openmptcprouter.service_addr !== "") + { + statusMessage += '<%:No Server http response after 1 second%>' + '
    '; + } + if(zonewan == "NO") + { + statusMessage += '<%:Network interface not in WAN firewall zone%>' + '
    '; + statusMessageClass = "warning"; + } + if (istatus == 'ERROR' && ipaddr != '' && ipaddr == mArray.wans[i].gateway) + { + statusMessage += '<%:Wan IP and gateway are identical%>' + '
    '; + statusMessageClass = "error"; + } + if (istatus == 'ERROR' && ip6addr != '' && ip6addr == mArray.wans[i].gateway6) { statusMessage += '<%:Wan IP and gateway are identical%>' + '
    '; statusMessageClass = "error"; @@ -539,6 +662,20 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessage += '<%:Network interface duplicated%>' + '
    '; statusMessageClass = "error"; } + if(iftype == "bridge") + { + statusMessage += '<%:Bridge can't have multipath enabled%>' + '
    '; + statusMessageClass = "error"; + } + if(duplicatemac) + { + statusMessage += '<%:Network interface MAC address duplicated%>' + '
    '; + statusMessageClass = "error"; + } + if(loop) + { + statusMessage += '<%:Looping route detected%>' + '
    '; + } if(ipv6_discover == 'DETECTED') { statusMessage += '<%:IPv6 route received%>' + '
    ' @@ -548,6 +685,11 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm statusMessageClass = "warning"; statusIcon = "<%=resource%>/openmptcprouter/images/statusWarning.png"; } + if (statusMessage !== "" && statusMessageClass == "error") + { + statusMessageClass = "error"; + statusIcon = "<%=resource%>/openmptcprouter/images/statusError.png"; + } content += String.format('<%:multipath:%> %s
    ',multipath); if(mArray.wans[i].qos && mArray.wans[i].download > 0 && mArray.wans[i].upload > 0) { @@ -557,6 +699,12 @@ local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openm temp += ''; } + if (mArray.wans.length == 0) + { + temp += '
  • '; + temp += '<%:No WAN with multipath enabled:%>'; + temp += '
  • '; + } for( var i = 0; i < mArray.tunnels.length; i++ ) { // Get link color diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm index da0649831..dd69b1293 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wizard.htm @@ -6,12 +6,29 @@ local fs = require "nixio.fs" local sys = require "luci.sys" local ut = require "luci.util" + local uname = nixio.uname() local ifaces = sys.net:devices() + local ifttyu = nixio.fs.glob("/dev/ttyUSB*") + local ifttyc = nixio.fs.glob("/dev/cdc-wdm*") + if nixio.fs.stat('/usr/bin/apk', 'type') == 'reg' then + sqm = luci.sys.exec("apk list 2>/dev/null | grep installed | grep -q luci-app-sqm && echo -n '1' || echo -n '0'") + else + sqm = luci.sys.exec("opkg list-installed | grep -q luci-app-sqm && echo -n '1' || echo -n '0'") + end + if nixio.fs.stat('/usr/bin/apk', 'type') == 'reg' then + qos = luci.sys.exec("apk list 2>/dev/null | grep installed | grep -q luci-app-qos && echo -n '1' || echo -n '0'") + else + qos = luci.sys.exec("opkg list-installed | grep -q luci-app-qos && echo -n '1' || echo -n '0'") + end menuentry = uci:get("openmptcprouter","settings","menu") or "openmptcprouter" function device_notvirtual(dev) - for _, iface in ipairs(net:get_networks()) do + if dev:match("^eth.*") or dev:match("^wwan.*") or dev:match("^tun.*") or dev:match("/") then + return true + end + networks = net:get_networks() + for _, iface in ipairs(networks) do local ifacen = iface:name() - local ifacename = uci:get("network",ifacen,"ifname") + local ifacename = uci:get("network",ifacen,"device") local ifacetype = uci:get("network",ifacen,"type") or "" local ifaceproto = uci:get("network",ifacen,"proto") or "" --if ifacename == dev and (ifacetype == "macvlan" or ifacetype == "bridge" or ifaceproto == "6in4") then @@ -21,6 +38,33 @@ end return true end + function splitstring(inputstr, sep) + if inputstr == nil then + return "" + end + if sep == nil then + sep = "%s" + end + local t={} + for str in string.gmatch(inputstr, "([^"..sep.."]+)") do + table.insert(t, str) + end + return t + end + + alltty = {} + iftty = luci.sys.exec("timeout 1 /usr/bin/mmcli -L") + if iftty ~= nil then + for listtty in iftty:gmatch("([^\r\n]*)[\r\n]") do + modemid = luci.util.trim(luci.sys.exec("echo '" .. listtty .. "' | awk -F' ' '{print $1}' | awk -F/ '{print $6}'")) + if modemid ~= '' then + modeminfo = luci.sys.exec("timeout 1 /usr/bin/mmcli -m " .. modemid .. " --output-keyvalue") + tty = luci.util.trim(luci.sys.exec("echo '" .. modeminfo .. "' | grep 'modem.generic.device ' | awk -F': ' '{print $2}'")) + table.insert(alltty, tty) + end + end + end + %> @@ -35,7 +79,7 @@ } <% if stderr and #stderr > 0 then %>
    <%=pcdata(stderr)%>
    <% end %> - +

    <%:Wizard%>

    @@ -45,6 +89,9 @@ uci:foreach("openmptcprouter","server", function(s) nbserver=nbserver+1 end) + if nbserver == 0 then + uci:set("openmptcprouter","vps","server") + end uci:foreach("openmptcprouter","server", function(s) servername = s[".name"] %> @@ -54,17 +101,30 @@

    <%=servername%>

    -
    - +
    +
    - " data-optional="false"> + " data-optional="false">
    <%:Server IP will be set for proxy and VPN%>
    +
    + +
    + " data-optional="false"> + " data-optional="false"> +
    + <%:Server IP will be set for proxy and VPN%> +
    +
    + <%:A second server's IP can be set for dual IPv4/IPv6 server if WAN IPv6 are set%> +
    +
    +

    -
    +
    " data-optional="false"> @@ -74,7 +134,7 @@
    -
    +
    " data-optional="false"> @@ -88,10 +148,10 @@ if nbserver > 1 then %>
    -
    +
    - checked<% end %>/> + checked <% end %>/>
    <%:Only one server can be master, else all servers are set as backup.%> @@ -102,10 +162,10 @@ end %>
    -
    +
    - checked<% end %>/> + checked <% end %>/>
    <% @@ -120,9 +180,9 @@
    - <%:Common server settings%> + <%:Advanced settings%>
    - +
    @@ -147,7 +207,10 @@
    - checked<% end %> /> +
    <%:You should disable IPv6 here if server doesn't provide IPv6.%> @@ -164,26 +227,85 @@
    +
    + +
    + checked <% end %>/> +
    +
    + <%:If host support NAT64, you can enable DNS64 support.%> +
    +
    +
    <%:Proxy settings%> -
    <%:By default proxy is used for any traffic that is TCP (and UDP for V2Ray).%>
    +
    <%:By default proxy is used for any traffic that is TCP (and UDP for V2Ray/XRay).%>

    - <%:Set the default Proxy used for TCP when ShadowSocks is enabled, for TCP and UDP when V2Ray is enabled.%> + <%:Set the default Proxy used for TCP when ShadowSocks is enabled, for TCP and UDP when V2Ray/XRay VLESS, VMESS or Trojan is enabled.%> <%:Only ShadowSocks is supported with server multiple IPs for now.%>
    - + <% if nixio.fs.access("/etc/init.d/shadowsocks-libev") then %>
    @@ -194,28 +316,72 @@
    + <% end %> + <% if nixio.fs.access("/etc/init.d/xray") or nixio.fs.access("/etc/init.d/shadowsocks-rust") then %> +
    + +
    + " /> +
    +
    + <%:Key is retrieved from server API by default.%> <%:ShadowSocks is used for TCP.%> +
    +
    +
    + <% end %> + <% if nixio.fs.access("/etc/init.d/v2ray") then %>
    " />
    - <%:Key is retrieved from server API by default.%> <%:V2Ray is used for TCP and UDP.%> + <%:Key is retrieved from server API by default.%>
    + <% end %> + <% if nixio.fs.access("/etc/init.d/xray") then %> +
    + +
    + " /> +
    +
    + <%:Key is retrieved from server API by default.%> +
    +
    +
    + <% end %> + <% if nixio.fs.access("/etc/init.d/xray") or nixio.fs.access("/etc/init.d/v2ray") then %> +
    + +
    + checked<% end %>> +
    +
    + <%:When proxy V2Ray/XRay VLESS, VMESS or Trojan is used, use it for UDP%> +
    +
    +
    + <% end %>

    @@ -226,7 +392,8 @@ <% else %> <%:There is no Advanced Encryption Standard (AES) instruction set integrated in the processor, you should use chacha20.%> <% end %> - <%:Encryption method is used for Shadowsocks, V2Ray, Glorytun and OpenVPN.%> + <%:Encryption method is used for Shadowsocks, V2Ray/XRay, Glorytun and OpenVPN.%> + <%:Shadowsocks-go, used on server side when Shadowsocks-Rust is used, doesn't support chacha20, AES-256-GCM is used instead.%>
    @@ -321,8 +488,8 @@ <% if nixio.fs.access("/usr/sbin/dsvpn") then %><% end %> <% if nixio.fs.access("/usr/sbin/mlvpn") then %><% end %> <% if nixio.fs.access("/usr/sbin/ubond") then %><% end %> - <% if nixio.fs.access("/etc/init.d/openvpn") then %><% end %> - <% if nixio.fs.access("/etc/init.d/openvpnbonding") then %><% end %> + <% if nixio.fs.access("/etc/init.d/openvpn") then %><% end %> + <% end @@ -335,6 +502,41 @@
    +
    + <%:MPTCP over VPN settings%> +
    <%:MPTCP over VPN should be used only when Multipath TCP is blocked on a connection.%> <%:Only work with Shadowsocks as proxy.%>
    +
    + +
    + +
    +
    + <%:Set VPN to use for MPTCP over VPN.%> +
    +
    +
    +
    +
    + <%:Country settings%> +
    <%:Set configuration for countries with some specificities.%>
    +
    + +
    + +
    +
    + <%:For China, set an accessible DNS and disable DNSSEC.%> +
    +
    +
    +

    @@ -342,7 +544,7 @@ <% for _, iface in ipairs(net:get_networks()) do local ifname = iface:name() - local firewall_lan = luci.util.trim(luci.sys.exec("uci -q get firewall.@zone[0].network | grep " .. ifname)) + local firewall_lan = luci.util.trim(luci.sys.exec("uci -q get firewall.zone_lan.network | tr ' ' '\n' | grep \'^" .. ifname .. "$\'")) if firewall_lan ~= "" then %>

    <%=ifname%>

    @@ -352,6 +554,7 @@
    + "> ">
    @@ -384,10 +587,10 @@ <% iffind=0 for _, ifacea in ipairs(ifaces) do - if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*")) and device_notvirtual(ifacea) then + if not (ifacea == "lo" or ifacea == "6in4-omr6in4" or ifacea == "mlvpn0" or ifacea:match("^ifb.*") or ifacea:match("^sit.*") or ifacea:match("^gre.*") or ifacea:match("^ip6.*") or ifacea:match("^teql.*") or ifacea:match("^erspan.*") or ifacea:match("^tun.*") or ifacea:match("^bond.*")) and device_notvirtual(ifacea) then if uci:get("network",ifname,"proto") ~= "macvlan" then %> - + <% else %> @@ -397,9 +600,9 @@ end end if uci:get("network",ifname,"proto") ~= "macvlan" then - if iffind == 0 and uci:get("network",ifname,"ifname") ~= nil then + if iffind == 0 and uci:get("network",ifname,"device") ~= nil then %> - + <% end else @@ -420,13 +623,13 @@ <% end %> -
    +
    " data-type="ip4addr">
    -
    +
    " data-type="ip4addr"> @@ -441,11 +644,12 @@
    <%:Interfaces settings%> -
    <%:You must disable DHCP on your modems and set IP in different networks.%>
    + <% for _, iface in ipairs(net:get_networks()) do local ifname = iface:name() - local firewall_wan = luci.util.trim(luci.sys.exec("uci -q get firewall.@zone[1].network | grep " .. ifname)) + local firewall_wan = luci.util.trim(luci.sys.exec("uci -q get firewall.zone_wan.network | tr ' ' '\n' | grep \'^" .. ifname .. "$\'")) + local ttl = uci:get("network",ifname .. "_dev","ttl") if firewall_wan ~= "" then -- local multipath = uci:get("network",ifname,"multipath") @@ -489,7 +693,7 @@ + @@ -523,26 +728,38 @@
    -
    +
    + +
    <%:Choose physical interface.%> @@ -576,20 +793,80 @@
    + <% + ipv6list = uci:get_list("network",ifname,"ip6addr") + for key, value in pairs(ipv6list) do + %> +
    + +
    + +
    +
    + <%:Set an IP in the same network as the modem%> +
    +
    +
    + <% + end + if table.getn(ipv6list) ~= 0 then + %> +
    + +
    + " data-type="ip6addr" data-optional="true"> +
    +
    + <%:Set here IP of the modem%> +
    +
    +
    + <% + else + %> +
    + +
    + +
    +
    + <%:Set an IP in the same network as the modem%> +
    +
    +
    +
    + +
    + " data-type="ip6addr"> +
    +
    + <%:Set here IP of the modem%> +
    +
    +
    + <% + end + %> +
    <% iffind=0 - iftty = nixio.fs.glob("/dev/cdc-wdm*") - for tty in iftty do + for tty in ifttyc do %> <% @@ -630,16 +906,10 @@ +
    +
    + <%:You can force a TTL. Some LTE provider detect tethering by inpecting packet TTL value, setting it to 65 often solve the issue.%> +
    +
    +
    <% local download = "0" local upload = "0" download = uci:get("network",ifname,"downloadspeed") or "0" upload = uci:get("network",ifname,"uploadspeed") or "0" + cake = uci:get("sqm",ifname,"qdisc") or "cake" --if download == "0" or upload == "0" then -- if nixio.fs.access("/etc/init.d/sqm") then -- download = uci:get("sqm",ifname,"download") @@ -754,7 +1035,7 @@ -- end --end %> -
    +
    checked<% end %> /> @@ -764,23 +1045,74 @@
    -
    + <% + if sqm == "1" then + %> +
    - checked<% end %> /> + checked<% end %> />
    - <%:You should disable SQM for LTE or any interfaces with variable speed.%> + <%:SQM control bufferbloat: the undesirable latency that arises when the router buffers too much data.%>
    -
    + +
    + +
    + checked<% end %> /> +
    +
    + <%:SQM autorate is for LTE and connection without a stable speed.%> + <%:Download and upload speed MUST be set to make this work.%> + <% + if cake ~= "cake" then + %> + <%:Cake queue discipline is not set, autorate will only work after a reboot if enabled here.%> + <% + end + %> +
    +
    +
    + <% + end + %> + <% + if qos == "1" then + %> +
    + +
    + checked<% end %> /> +
    +
    + <%:QoS permit to prioritize any upload traffic.%> +
    +
    +
    + <% + end + %> +
    + +
    + checked<% end %> /> +
    +
    + <%:Run an automatic speedtest to calculate max download & upload speed.%> +
    +
    +
    +

    - <%:Used by Glorytun UDP and SQM/QoS if enabled. 0 to use default value.%> + <%:Used by Glorytun UDP and SQM/QoS if enabled.%>
    -
    +

    - <%:Used by Glorytun UDP and SQM/QoS if enabled. 0 to use default value.%> + <%:Used by Glorytun UDP and SQM/QoS if enabled.%>
    +
    + +
    +
    + +
    +
    +
    + +
    + + +<%+footer%> diff --git a/luci-app-sysupgrade/po/fr/sysupgrade.po b/luci-app-sysupgrade/po/fr/sysupgrade.po new file mode 100644 index 000000000..8195816c5 --- /dev/null +++ b/luci-app-sysupgrade/po/fr/sysupgrade.po @@ -0,0 +1,97 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-03-31 15:07+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" +"Cochez \"Conserver les paramètres\" pour conserver la configuration actuelle." + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "Téléchargement du micrologiciel dans la mémoire du navigateur Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "" +"Recherchez et installez facilement les nouvelles versions et les mises à " +"niveau des paquets." + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "Modifier les packages installés" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "Mise à jour du micrologiciel. Ne débranchez pas l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "Version installée :" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "Conserver les paramètres :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "Pas de mise à jour disponible" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "Redémarrage de l'appareil - veuillez patienter !" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "Demander le micrologiciel" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "Rechercher des mises à jour" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "Recherche des mises à jour" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "Serveur :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "Succès ! Veuillez recharger l'interface Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "Mise à jour système" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" +"Le téléchargement du micrologiciel a échoué, veuillez réessayer en " +"rechargeant l'interface Web" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "Téléchargement du micrologiciel sur l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "" +"L'interface Web n'a pas pu se reconnecter à votre appareil. Recharger " +"l'interface" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "Mise à jour système via rpcd et luci" diff --git a/luci-app-sysupgrade/po/fr/sysupgrade.po~ b/luci-app-sysupgrade/po/fr/sysupgrade.po~ new file mode 100644 index 000000000..45f8c0ba5 --- /dev/null +++ b/luci-app-sysupgrade/po/fr/sysupgrade.po~ @@ -0,0 +1,97 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-03-31 15:07+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" +"Cochez \"Conserver les paramètres\" pour conserver la configuration actuelle." + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "Téléchargement du micrologiciel dans la mémoire du navigateur Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "" +"Recherchez et installez facilement les nouvelles versions et les mises à " +"niveau des paquets." + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "Modifier les packages installés" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "Mise à jour du micrologiciel. Ne débranchez pas l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "Version installée :" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "Conserver les paramètres :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "Pas de mise à jour disponible" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "Redémarrage de l'appareil - veuillez patienter !" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "Demander le micrologiciel" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:110 +msgid "Search for upgrades" +msgstr "Rechercher des mises à jour" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "Recherche des mises à jour" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:103 +msgid "Server:" +msgstr "Serveur :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "Succès ! Veuillez recharger l'interface Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "Mise à jour système" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" +"Le téléchargement du micrologiciel a échoué, veuillez réessayer en " +"rechargeant l'interface Web" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "Téléchargement du micrologiciel sur l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "" +"L'interface Web n'a pas pu se reconnecter à votre appareil. Recharger " +"l'interface" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "Mise à jour système via rpcd et luci" diff --git a/luci-app-sysupgrade/po/ru/sysupgrade.po b/luci-app-sysupgrade/po/ru/sysupgrade.po new file mode 100644 index 000000000..742b59652 --- /dev/null +++ b/luci-app-sysupgrade/po/ru/sysupgrade.po @@ -0,0 +1,94 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" +"Поставьте \"Сохранить настройки\", чтобы сохранить текущую конфигурацию." + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "Загружаем ПО в память вашего браузера" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "Легко ищите и устанавливайте новые версии ПО и обновления пакетов." + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "Редактировать список установленных пакетов" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "Обновляем ПО маршрутизатора. Не выключайте питание вашего устройства" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "Установленная версия:" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "Сохранить настройки:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "Обновления не найдены" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "Перезагружаем роутер, пожалуйста подождите!" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "Загрузить ПО" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "Поиск обновлений" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "Поиск обновлений" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "Сервер:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "Успешно! Пожалуйста обновите страницу" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "sysupgrade" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" +"Ошибка при загрузке обновлений ПО. Для продолжения, пожалуйста обновите " +"страницу" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "Загружаем обновления ПО в память роутера" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "Проблема при подключении к роутеру. Пожалуйста обновите страницу" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "sysupgrade с использованием RPCd и LUCI" diff --git a/luci-app-sysupgrade/po/templates/sysupgrade.pot b/luci-app-sysupgrade/po/templates/sysupgrade.pot new file mode 100644 index 000000000..1ebb8dc2e --- /dev/null +++ b/luci-app-sysupgrade/po/templates/sysupgrade.pot @@ -0,0 +1,81 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "" diff --git a/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po new file mode 100644 index 000000000..e68dec985 --- /dev/null +++ b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po @@ -0,0 +1,90 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-03 07:27+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "勾选保持当前配置。" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "下载固件到网页浏览器内存" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "轻松搜索和安装新版本升级固件包。" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "编辑安装包" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "设备升级中。请不要断开电源" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "安装的版本:" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "保持设置:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "没有升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "正在重启设备-请稍候!" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "请求固件" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "服务器:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "成功!请重新加载web界面" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "系统升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "轻松搜索和安装新版本的系统进行升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "上传固件到设备" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "网络界面无法重新连接到您的设备。请重新加载web界面或手动检查设备" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "通过RPCD和luci进行升级" diff --git a/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po~ b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po~ new file mode 100644 index 000000000..85f483866 --- /dev/null +++ b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po~ @@ -0,0 +1,90 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:03+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "勾选保持当前配置。" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "下载固件到网页浏览器内存" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "轻松搜索和安装新版本和包升级。" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "编辑安装包" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "设备升级中。请不要断开电源" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "安装的版本:" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "保持设置:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "没有升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "正在重启设备-请稍候!" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "请求固件" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:110 +msgid "Search for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:103 +msgid "Server:" +msgstr "服务器:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "成功!请重新加载web界面" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "系统升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "轻松搜索和安装新版本的系统进行升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "上传固件到设备" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "网络界面无法重新连接到您的设备。请重新加载web界面或手动检查设备" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "通过RPCD和luci进行升级" diff --git a/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade b/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade new file mode 100755 index 000000000..a5ef66fe8 --- /dev/null +++ b/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade @@ -0,0 +1,20 @@ +#!/bin/sh + +/etc/init.d/uhttpd restart +/etc/init.d/rpcd reload + +[ -e /etc/config/sysupgrade ] && return 0 + +touch /etc/config/sysupgrade + +uci -q batch < + ubus_call("uci", "get", option, option["option"]) +} + +ubus_counter = 0; +ubus_closed = 0; + +function ubus_call(command, argument, params, variable) { + var request_data = {}; + request_data.jsonrpc = "2.0"; + request_data.id = ubus_counter; + request_data.method = "call"; + request_data.params = [data.ubus_rpc_session, command, argument, params] + var request_json = JSON.stringify(request_data) + ubus_counter++; + var request = new XMLHttpRequest(); + request.open("POST", ubus_url, true); + request.setRequestHeader("Content-type", "application/json"); + request.onload = function(event) { + if (request.status === 200) { + var response = JSON.parse(request.responseText) + if (!("error" in response) && "result" in response) { + if (response.result.length === 2) { + if (command === "uci") { + data[variable] = response.result[1].value + } else { + data[variable] = response.result[1][variable] + } + } + } else { + set_status("danger", "Ubus call failed:
    Request: " + request_json + "
    Response: " + JSON.stringify(response)) + } + ubus_closed++; + } + } + request.send(request_json); +} + +function set_status(type, message, loading, show_log) { + $("#status_box").className = "alert-message " + type; + var loading_image = ''; + if (loading) { + loading_image = 'Loading '; + } + if (data.buildlog_url && show_log) { + message += '

    Build log

    ' + } + $("#status_box").innerHTML = loading_image + message; + show("#status_box") +} + +function upgrade_check() { + var current_version = data.release.version.toLowerCase(); + var current_branch = current_version.split('-')[0].split('.').slice(0, 2).join('.') + var candidates = [] + hide("#status_box"); + hide("#server_div"); + set_status("info", _("Searching for upgrades"), true); + fetch(data.url + "/api/versions?v=" + Date.now()) + .then(response => response.json()) + .then(response => { + var branches = response["branches"] + for (i in branches) { + // handle snapshots in a special way - as always + if (current_version == "snapshot" && branches[i]["latest"] == "snapshot") { + candidates.unshift(branches[i]) + break + } + + if (current_version == branches[i]["latest"]) { + break + } + if (current_branch != branches[i]["name"]) { + branches[i]["warn_branch_jump"] = true + } + candidates.unshift(branches[i]) + if (current_branch == branches[i]["name"]) { + // don't offer branches older than the current + break + } + } + + if (candidates.length > 0) { + var info_output = "

    New release " + candidates[0].latest + " available

    " + info_output += _('Installed version:') + " " + data.release.version + + // tell server the currently installed version + request_dict.current_version = request_dict.version; + // tell server what version to install + request_dict.version = candidates[0].latest; + // tell server to diff the requested packages with the default packages + // this allows to not automatically re-install default packages which + // where dropped in later releases + request_dict.diff_packages = true; + + set_status("success", info_output) + + if (data.advanced_mode == 1) { + show("#edit_button"); + } + var upgrade_button = $("#upgrade_button") + upgrade_button.value = _("Request firmware"); + upgrade_button.style.display = "block"; + upgrade_button.disabled = false; + upgrade_button.onclick = upgrade_request; + + } else { + set_status("success", _("No upgrades available")) + + } + }); + +} + +function upgrade_request() { + // Request firmware using the following parameters + // distro, version, target, board_name, packages + $("#upgrade_button").disabled = true; + hide("#edit_packages"); + hide("#edit_button"); + hide("#keep_container"); + + // add board info to let server determine profile + request_dict.target = data.release.target + request_dict.profile = data.board_name + request_dict.kernel = data.kernel + request_dict.rootfs = data.format + request_dict.efi = data.efi_enabled + + if (data.edit_packages == true) { + request_dict.packages = $("#edit_packages").value.split("\n") + } else { + request_dict.packages = Object.keys(data.packages); + } + server_request() +} + +function upgrade_request_callback(response) { + var sysupgrade_file = ""; + console.log(response) + for (i in response.images) { + if (response.images[i].type == "sysupgrade") { + sysupgrade_file = response.images[i].name; + } + } + if (sysupgrade_file != "") { + data.sysupgrade_url = data.url + '/release/' + response.bin_dir + '/' + sysupgrade_file + var info_output = '

    Firmware searched

    File: ' + sysupgrade_file + '

    ' + set_status("success", info_output, false, true); + + show("#keep_container"); + var upgrade_button = $("#upgrade_button") + upgrade_button.disabled = false; + upgrade_button.style.display = "block"; + upgrade_button.value = "Flash firmware"; + upgrade_button.onclick = download_image; + } else { + set_status("danger", "Device not sysupgrade compatible!") + } +} + +function flash_image() { + // Flash image via rpc-sys upgrade_start + set_status("warning", _("Flashing firmware. Don't unpower device"), true) + ubus_call("rpc-sys", "upgrade_start", { + "keep": $("#keep").checked + }, 'message'); + ping_max = 3600; // in seconds + setTimeout(ping_ubus, 10000) +} + +function ping_ubus() { + // Tries to connect to ubus. If the connection fails the device is likely still rebooting. + // If more time than ping_max passes update may failed + if (ping_max > 0) { + ping_max--; + var request = new XMLHttpRequest(); + request.open("GET", ubus_url, true); + request.addEventListener('error', function(event) { + set_status("warning", _("Rebooting device - please wait!"), true); + setTimeout(ping_ubus, 5000) + }); + request.addEventListener('load', function(event) { + set_status("success", _("Success! Please reload web interface")); + $("#upgrade_button").value = "Reload page"; + show("#upgrade_button"); + $("#upgrade_button").disabled = false; + $("#upgrade_button").onclick = function() { + location.reload(); + } + }); + request.send(); + } else { + set_status("danger", _("Web interface could not reconnect to your device. Please reload web interface or check device manually")) + } +} + +function upload_image(blob) { + // Uploads received blob data to the server using cgi-io + set_status("info", _("Uploading firmware to device"), true); + var request = new XMLHttpRequest(); + var form_data = new FormData(); + + form_data.append("sessionid", data.ubus_rpc_session) + form_data.append("filename", "/tmp/firmware.bin") + form_data.append("filemode", 755) // insecure? + form_data.append("filedata", blob) + + request.addEventListener('load', function(event) { + request_json = JSON.parse(request.responseText) + flash_image(); + }); + + request.addEventListener('error', function(event) { + set_status("danger", _("Upload of firmware failed, please retry by reloading web interface")) + }); + + request.open('POST', origin + '/cgi-bin/cgi-upload'); + request.send(form_data); +} + + +function download_image() { + // Download image from server once the url was received by upgrade_request + hide("#keep_container"); + hide("#upgrade_button"); + var download_request = new XMLHttpRequest(); + download_request.open("GET", data.sysupgrade_url); + download_request.responseType = "arraybuffer"; + + download_request.onload = function() { + if (this.status === 200) { + var blob = new Blob([download_request.response], { + type: "application/octet-stream" + }); + upload_image(blob) + } + }; + set_status("info", _("Downloading firmware to web browser memory"), true); + download_request.send(); +} + +function server_request() { + fetch(data.url + "/api/build?v=" + Date.now(), { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(request_dict) + }) + .then(response => { + switch (response.status) { + case 200: + response.json() + .then(response => { + upgrade_request_callback(response) + }); + break; + case 202: + set_status("info", "Processing request", true); + setTimeout(function() { + server_request() + }, 5000) + break; + case 400: // bad request + case 422: // bad package + case 500: // build failed + console.log('error (' + response.status + ')'); + response.json() + .then(response => { + if (response.buildlog) { + data.buildlog_url = data.url + '/' + response.bin_dir + '/buildlog.txt'; + } + set_status("danger", response.message); + }); + break; + } + }); +} + +request_dict = {} +document.onload = setup() diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css index 821b19a81..f20713832 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css @@ -128,7 +128,6 @@ .Dashboard .settings-info p span:nth-child(2){ display: inline-block; word-break: break-all; - max-width: 150px; overflow: hidden; max-height: 16px; position: relative; diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js index 5b57f6126..cf69d4d0e 100644 --- a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js @@ -213,7 +213,10 @@ return baseclass.extend({ if (data.openmptcprouter.wan_addr) this.params.omrvps.internet.v4.addrsv4.value = data.openmptcprouter.wan_addr || [ '-']; if (data.openmptcprouter.wan_addr6) this.params.omrvps.internet.v6.addrsv6.value = data.openmptcprouter.wan_addr6 || [ '-']; if (data.openmptcprouter.vps_kernel) this.params.omrvps.vps.version.value = data.openmptcprouter.vps_kernel + ' ' + data.openmptcprouter.vps_omr_version || [ '-']; - if (data.openmptcprouter.vps_loadavg) this.params.omrvps.vps.load.value = data.openmptcprouter.vps_loadavg || [ '-']; + if (data.openmptcprouter.vps_loadavg) { + var vps_loadavg = data.openmptcprouter.vps_loadavg.split(" "); + this.params.omrvps.vps.load.value = '%s, %s, %s'.format(vps_loadavg[0],vps_loadavg[1],vps_loadavg[2]); + } if (data.openmptcprouter.vps_uptime) this.params.omrvps.vps.uptime.value = String.format('%t', data.openmptcprouter.vps_uptime) || [ '-']; if (data.openmptcprouter.proxy_traffic) this.params.omrvps.vps.trafficproxy.value = this.formatBytes(data.openmptcprouter.proxy_traffic) || [ '-']; if (data.openmptcprouter.vpn_traffic) this.params.omrvps.vps.trafficvpn.value = this.formatBytes(data.openmptcprouter.vpn_traffic) || [ '-']; @@ -368,7 +371,7 @@ return baseclass.extend({ release: { title: _('Firmware Version'), - value: boardinfo.release.description + value: (typeof boardinfo.release !== "undefined") ? ((typeof boardinfo.release.description !== "undefined") ? boardinfo.release.description : null) : null } }; diff --git a/luci-mod-dashboard/po/fr/dashboard.po b/luci-mod-dashboard/po/fr/dashboard.po new file mode 100644 index 000000000..ee91c668b --- /dev/null +++ b/luci-mod-dashboard/po/fr/dashboard.po @@ -0,0 +1,223 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "Actif" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "Architecture" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "BSSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "Débit" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "Canal" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "Connecté" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "Périphériques DHCP" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "Périphériques" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "Périphériques connectés" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "En panne." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "Téléchargement" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "Chiffrement" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "Version du micrologiciel" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "GHz" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "Permettre l'accès à l'affichage de l'état DHCP" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "Permettre l'accès à l'affichage de l'état principal" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "Permettre l’accès au status de routage" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "Permettre l'accès du status WIFI" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "Nom d'hôte" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "Adresse IP" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "Internet IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "Internet IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "Préfixe IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "Version du noyau" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "Charge" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "Charge moyenne" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "Heure locale" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "MAC" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "Mac" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "Modèle" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "Non connecté" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "Trafic proxy" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "SSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "Serveur" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "Signal" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "Système" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "Trafic total" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "En ligne." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "Téléverser" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "Temps de service" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "Trafic VPN" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "Version" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "Sans-fil" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "non" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "oui" diff --git a/luci-mod-dashboard/po/ru/dashboard.po b/luci-mod-dashboard/po/ru/dashboard.po new file mode 100644 index 000000000..466e9ab42 --- /dev/null +++ b/luci-mod-dashboard/po/ru/dashboard.po @@ -0,0 +1,224 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "Активный" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "Процессор" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "BSSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "Скорость" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "Канал" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "Подключено" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "Устройства DHCP" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "Дашборд" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "Устройства" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "Подключенные устройства" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "Не работает." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "Получение" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "Шифрование" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "Версия ПО" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "GHz" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "Разрешить просмотр информации о DHCP" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "Разрешить просмотр информации основной информации" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "Разрешить просмотр информации о маршрутах" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "Разрешить просмотр информации о беспроводных сетях" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "Имя хоста" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "IP-адрес" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "IPv4 Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "IPv6 Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "Префикс IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "Версия ядра" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "Загрузка" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "Средняя загрузка" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "Время хоста" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "MAC" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "Mac" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "Модель" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "Не подключено" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "Трафик через прокси" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "SSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "Сервер" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "Сигнал" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "Система" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "Трафик всего" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "Работает." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "Отправка" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "Uptime" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "Трафик VPN" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "Версия" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "Безпроводной" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "нет" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "да" diff --git a/luci-mod-dashboard/po/templates/dashboard.pot b/luci-mod-dashboard/po/templates/dashboard.pot new file mode 100644 index 000000000..018a75101 --- /dev/null +++ b/luci-mod-dashboard/po/templates/dashboard.pot @@ -0,0 +1,214 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "" diff --git a/luci-mod-dashboard/po/zh_Hans/dashboard.po b/luci-mod-dashboard/po/zh_Hans/dashboard.po new file mode 100644 index 000000000..4da85b2c8 --- /dev/null +++ b/luci-mod-dashboard/po/zh_Hans/dashboard.po @@ -0,0 +1,223 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-02 09:51+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "激活" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "构架" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "BSSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "比特率" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "频道" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "连接" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "DHCP 设备" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "仪表盘" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "设备" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "连接的设备" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "下." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "下载" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "加密" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "固件版本" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "Ghz" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "授予访问 DHCP 状态显示的权限" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "授予访问主状态显示的权限" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "授予对系统路由状态的访问权限" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "授予访问无线状态显示的权限" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "主机名" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "IP地址" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "IPv4互联网" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "IPv6互联网" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "IPv6前缀" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "互联网" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "内核版本" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "负载" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "平均负载" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "本地时间" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "MAC地址" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "mac地址" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "型号" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "未连接" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "代理流量" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "SSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "服务器" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "信号" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "系统" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "总流量" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "上." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "上传" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "开机时间" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "VPN流量" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "版本" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "无线" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "否" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "是" diff --git a/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json b/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json index 555884674..88c4a4c4d 100644 --- a/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json +++ b/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json @@ -1,7 +1,7 @@ { "admin/dashboard": { "title": "Dashboard", - "order": 1, + "order": 5, "action": { "type": "view", "path": "dashboard/index" diff --git a/luci-mod-network/Makefile b/luci-mod-network/Makefile index 71e847f31..df9682b71 100644 --- a/luci-mod-network/Makefile +++ b/luci-mod-network/Makefile @@ -1,10 +1,10 @@ # # Copyright (C) 2008-2014 The LuCI Team -# Copyright (C) 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# Copyright (C) 2020-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter # # This is free software, licensed under the Apache License, Version 2.0 . # -# From https://github.com/openwrt/luci/commit/f5c04e1a2e173f536597f220db0380cc08869e8e +# From https://github.com/openwrt/luci/commit/29fe3f5fdad6bc7c72799adff22847a6e257f7c0 include $(TOPDIR)/rules.mk diff --git a/luci-mod-network/htdocs/luci-static/resources/tools/network.js b/luci-mod-network/htdocs/luci-static/resources/tools/network.js new file mode 100644 index 000000000..ab0680e2f --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/tools/network.js @@ -0,0 +1,1476 @@ +'use strict'; +'require fs'; +'require ui'; +'require dom'; +'require uci'; +'require form'; +'require network'; +'require baseclass'; +'require validation'; +'require tools.widgets as widgets'; + +function validateAddr(section_id, value) { + if (value == '') + return true; + + var ipv6 = /6$/.test(this.section.formvalue(section_id, 'mode')), + addr = ipv6 ? validation.parseIPv6(value) : validation.parseIPv4(value); + + return addr ? true : (ipv6 ? _('Expecting a valid IPv6 address') : _('Expecting a valid IPv4 address')); +} + +function validateQoSMap(section_id, value) { + if (value == '') + return true; + + var m = value.match(/^(\d+):(\d+)$/); + + if (!m || +m[1] > 0xFFFFFFFF || +m[2] > 0xFFFFFFFF) + return _('Expecting two priority values separated by a colon'); + + return true; +} + +function deviceSectionExists(section_id, devname) { + var exists = false; + + uci.sections('network', 'device', function(ss) { + exists = exists || ( + ss['.name'] != section_id && + ss.name == devname + ); + }); + + return exists; +} + +function isBridgePort(dev) { + if (!dev) + return false; + + if (dev.isBridgePort()) + return true; + + var isPort = false; + + uci.sections('network', null, function(s) { + if (s['.type'] != 'interface' && s['.type'] != 'device') + return; + + if (s.type == 'bridge' && L.toArray(s.ifname).indexOf(dev.getName()) > -1) + isPort = true; + }); + + return isPort; +} + +function updateDevBadge(node, dev) { + var type = dev.getType(), + up = dev.getCarrier(); + + dom.content(node, [ + E('img', { + 'class': 'middle', + 'src': L.resource('icons/%s%s.png').format(type, up ? '' : '_disabled') + }), + '\x0a', dev.getName() + ]); + + return node; +} + +function renderDevBadge(dev) { + return updateDevBadge(E('span', { + 'class': 'ifacebadge port-status-device', + 'style': 'font-weight:normal', + 'data-device': dev.getName() + }), dev); +} + +function updatePortStatus(node, dev) { + var carrier = dev.getCarrier(), + duplex = dev.getDuplex(), + speed = dev.getSpeed(), + desc, title; + + if (carrier && speed > 0 && duplex != null) { + desc = '%d%s'.format(speed, duplex == 'full' ? 'FD' : 'HD'); + title = '%s, %d MBit/s, %s'.format(_('Connected'), speed, duplex == 'full' ? _('full-duplex') : _('half-duplex')); + } + else if (carrier) { + desc = _('Connected'); + } + else { + desc = _('no link'); + } + + dom.content(node, [ + E('img', { + 'class': 'middle', + 'src': L.resource('icons/port_%s.png').format(carrier ? 'up' : 'down') + }), + '\x0a', desc + ]); + + if (title) + node.setAttribute('data-tooltip', title); + else + node.removeAttribute('data-tooltip'); + + return node; +} + +function renderPortStatus(dev) { + return updatePortStatus(E('span', { + 'class': 'ifacebadge port-status-link', + 'data-device': dev.getName() + }), dev); +} + +function updatePlaceholders(opt, section_id) { + var dev = network.instantiateDevice(opt.getUIElement(section_id).getValue()); + + for (var i = 0, co; (co = opt.section.children[i]) != null; i++) { + if (co !== opt) { + switch (co.option) { + case 'mtu': + case 'mtu6': + co.getUIElement(section_id).setPlaceholder(dev.getMTU()); + break; + + case 'macaddr': + co.getUIElement(section_id).setPlaceholder(dev.getMAC()); + break; + + case 'txqueuelen': + co.getUIElement(section_id).setPlaceholder(dev._devstate('qlen')); + break; + } + } + } +} + +var cbiFlagTristate = form.ListValue.extend({ + __init__: function(/* ... */) { + this.super('__init__', arguments); + this.keylist = [ '', '0!', '1!' ]; + this.vallist = [ _('automatic'), _('disabled'), _('enabled') ]; + }, + + load: function(section_id) { + var invert = false, sysfs = this.sysfs; + + if (sysfs) { + if (sysfs.charAt(0) == '!') { + invert = true; + sysfs = sysfs.substring(1); + } + + return L.resolveDefault(fs.read(sysfs), '').then(L.bind(function(res) { + res = (res || '').trim(); + + if (res == '0') + this.sysfs_default = invert; + else if (res == '1') + this.sysfs_default = !invert; + + return this.super('load', [section_id]); + }, this)); + } + + return this.super('load', [section_id]); + }, + + write: function(section_id, formvalue) { + if (formvalue == '1!') + return this.super('write', [section_id, '1']); + else if (formvalue == '0!') + return this.super('write', [section_id, '0']); + else + return this.super('remove', [section_id]); + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var sysdef = this.sysfs_default; + + if (this.sysfs_default !== null) { + this.keylist[0] = sysdef ? '1' : '0'; + this.vallist[0] = sysdef ? _('automatic (enabled)') : _('automatic (disabled)'); + } + + return this.super('renderWidget', [section_id, option_index, cfgvalue ? cfgvalue + '!' : null]); + } +}); + + +var cbiTagValue = form.Value.extend({ + renderWidget: function(section_id, option_index, cfgvalue) { + var widget = new ui.Dropdown(cfgvalue || ['-'], { + '-': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ '—' ]), + E('span', { 'class': 'hide-close' }, [ _('Not Member', 'VLAN port state') ]) + ]), + 'u': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 'U' ]), + E('span', { 'class': 'hide-close' }, [ _('Untagged', 'VLAN port state') ]) + ]), + 't': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 'T' ]), + E('span', { 'class': 'hide-close' }, [ _('Tagged', 'VLAN port state') ]) + ]), + '*': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ '*' ]), + E('span', { 'class': 'hide-close' }, [ _('Is Primary VLAN', 'VLAN port state') ]) + ]) + }, { + id: this.cbid(section_id), + sort: [ '-', 'u', 't', '*' ], + optional: false, + multiple: true + }); + + var field = this; + + widget.toggleItem = function(sb, li, force_state) { + var lis = li.parentNode.querySelectorAll('li'), + toggle = ui.Dropdown.prototype.toggleItem; + + toggle.apply(this, [sb, li, force_state]); + + if (force_state != null) + return; + + switch (li.getAttribute('data-value')) + { + case '-': + if (li.hasAttribute('selected')) { + for (var i = 0; i < lis.length; i++) { + switch (lis[i].getAttribute('data-value')) { + case '-': + break; + + case '*': + toggle.apply(this, [sb, lis[i], false]); + lis[i].setAttribute('unselectable', ''); + break; + + default: + toggle.apply(this, [sb, lis[i], false]); + } + } + } + break; + + case 't': + case 'u': + if (li.hasAttribute('selected')) { + for (var i = 0; i < lis.length; i++) { + switch (lis[i].getAttribute('data-value')) { + case li.getAttribute('data-value'): + break; + + case '*': + lis[i].removeAttribute('unselectable'); + break; + + default: + toggle.apply(this, [sb, lis[i], false]); + } + } + } + else { + toggle.apply(this, [sb, li, true]); + } + break; + + case '*': + if (li.hasAttribute('selected')) { + var section_ids = field.section.cfgsections(); + + for (var i = 0; i < section_ids.length; i++) { + var other_widget = field.getUIElement(section_ids[i]), + other_value = L.toArray(other_widget.getValue()); + + if (other_widget === this) + continue; + + var new_value = other_value.filter(function(v) { return v != '*' }); + + if (new_value.length == other_value.length) + continue; + + other_widget.setValue(new_value); + break; + } + } + } + }; + + var node = widget.render(); + + node.style.minWidth = '4em'; + + if (cfgvalue == '-') + node.querySelector('li[data-value="*"]').setAttribute('unselectable', ''); + + return E('div', { 'style': 'display:inline-block' }, node); + }, + + cfgvalue: function(section_id) { + var ports = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ports.length; i++) { + var s = ports[i].split(/:/); + + if (s[0] != this.port) + continue; + + var t = /t/.test(s[1] || '') ? 't' : 'u'; + + return /\x2a/.test(s[1] || '') ? [t, '*'] : [t]; + } + + return ['-']; + }, + + write: function(section_id, value) { + var ports = []; + + for (var i = 0; i < this.section.children.length; i++) { + var opt = this.section.children[i]; + + if (opt.port) { + var val = L.toArray(opt.formvalue(section_id)).join(''); + + switch (val) { + case '-': + break; + + case 'u': + ports.push(opt.port); + break; + + default: + ports.push('%s:%s'.format(opt.port, val)); + break; + } + } + } + + uci.set('network', section_id, 'ports', ports.length ? ports : null); + }, + + remove: function() {} +}); + +return baseclass.extend({ + + protocols: [ // name, proto number, description + { n: 'hopopt', i: 0, d: 'HOPOPT' }, + { n: 'icmp', i: 1, d: 'ICMP' }, + { n: 'igmp', i: 2, d: 'IGMP' }, + { n: 'ggp', i: 3, d: 'GGP' }, + { n: 'ipencap', i: 4, d: 'IP-ENCAP' }, + { n: 'st', i: 5, d: 'ST' }, + { n: 'tcp', i: 6, d: 'TCP' }, + { n: 'egp', i: 8, d: 'EGP' }, + { n: 'igp', i: 9, d: 'IGP' }, + { n: 'pup', i: 12, d: 'PUP' }, + { n: 'udp', i: 17, d: 'UDP' }, + { n: 'hmp', i: 20, d: 'HMP' }, + { n: 'xns-idp', i: 22, d: 'XNS-IDP' }, + { n: 'rdp', i: 27, d: 'RDP' }, + { n: 'iso-tp4', i: 29, d: 'ISO-TP4' }, + { n: 'dccp', i: 33, d: 'DCCP' }, + { n: 'xtp', i: 36, d: 'XTP' }, + { n: 'ddp', i: 37, d: 'DDP' }, + { n: 'idpr-cmtp', i: 38, d: 'IDPR-CMTP' }, + { n: 'ipv6', i: 41, d: 'IPv6' }, + { n: 'ipv6-route', i: 43, d: 'IPv6-Route' }, + { n: 'ipv6-frag', i: 44, d: 'IPv6-Frag' }, + { n: 'idrp', i: 45, d: 'IDRP' }, + { n: 'rsvp', i: 46, d: 'RSVP' }, + { n: 'gre', i: 47, d: 'GRE' }, + { n: 'esp', i: 50, d: 'IPSEC-ESP' }, + { n: 'ah', i: 51, d: 'IPSEC-AH' }, + { n: 'skip', i: 57, d: 'SKIP' }, + { n: 'icmpv6', i: 58, d: 'IPv6-ICMP' }, + { n: 'ipv6-nonxt', i: 59, d: 'IPv6-NoNxt' }, + { n: 'ipv6-opts', i: 60, d: 'IPv6-Opts' }, + { n: 'rspf', i: 73, d: 'CPHB' }, + { n: 'vmtp', i: 81, d: 'VMTP' }, + { n: 'eigrp', i: 88, d: 'EIGRP' }, + { n: 'ospf', i: 89, d: 'OSPFIGP' }, + { n: 'ax.25', i: 93, d: 'AX.25' }, + { n: 'ipip', i: 94, d: 'IPIP' }, + { n: 'etherip', i: 97, d: 'ETHERIP' }, + { n: 'encap', i: 98, d: 'ENCAP' }, + { n: 'pim', i: 103, d: 'PIM' }, + { n: 'ipcomp', i: 108, d: 'IPCOMP' }, + { n: 'vrrp', i: 112, d: 'VRRP' }, + { n: 'l2tp', i: 115, d: 'L2TP' }, + { n: 'isis', i: 124, d: 'ISIS' }, + { n: 'sctp', i: 132, d: 'SCTP' }, + { n: 'fc', i: 133, d: 'FC' }, + { n: 'mobility-header', i: 135, d: 'Mobility-Header' }, + { n: 'udplite', i: 136, d: 'UDPLite' }, + { n: 'mpls-in-ip', i: 137, d: 'MPLS-in-IP' }, + { n: 'manet', i: 138, d: 'MANET' }, + { n: 'hip', i: 139, d: 'HIP' }, + { n: 'shim6', i: 140, d: 'Shim6' }, + { n: 'wesp', i: 141, d: 'WESP' }, + { n: 'rohc', i: 142, d: 'ROHC' }, + ], + + replaceOption: function(s, tabName, optionClass, optionName, optionTitle, optionDescription) { + var o = s.getOption(optionName); + + if (o) { + if (o.tab) { + s.tabs[o.tab].children = s.tabs[o.tab].children.filter(function(opt) { + return opt.option != optionName; + }); + } + + s.children = s.children.filter(function(opt) { + return opt.option != optionName; + }); + } + + return s.taboption(tabName, optionClass, optionName, optionTitle, optionDescription); + }, + + addDeviceOptions: function(s, dev, isNew) { + var parent_dev = dev ? dev.getParent() : null, + devname = dev ? dev.getName() : null, + o, ss; + + s.tab('devgeneral', _('General device options')); + s.tab('devadvanced', _('Advanced device options')); + s.tab('brport', _('Bridge port specific options')); + s.tab('bridgevlan', _('Bridge VLAN filtering')); + + o = this.replaceOption(s, 'devgeneral', form.ListValue, 'type', _('Device type'), + !L.hasSystemFeature('bonding') && isNew ? ''+ + _('For bonding, install %s').format('kmod-bonding') + '' : null); + o.readonly = !isNew; + o.value('', _('Network device')); + if (L.hasSystemFeature('bonding')) { + o.value('bonding', _('Bonding/Aggregation device')); + } + o.value('bridge', _('Bridge device')); + o.value('8021q', _('VLAN (802.1q)')); + o.value('8021ad', _('VLAN (802.1ad)')); + o.value('macvlan', _('MAC VLAN')); + o.value('veth', _('Virtual Ethernet')); + o.validate = function(section_id, value) { + if (value == 'bonding' || value == 'bridge' || value == 'veth') + updatePlaceholders(this.section.getOption('name_complex'), section_id); + + return true; + }; + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'name_simple', _('Existing device')); + o.readonly = !isNew; + o.rmempty = false; + o.noaliases = true; + o.default = (dev ? dev.getName() : ''); + o.ucioption = 'name'; + o.filter = function(section_id, value) { + var dev = network.instantiateDevice(value); + return !deviceSectionExists(section_id, value) && (dev.getType() != 'wifi' || dev.isUp()); + }; + o.validate = function(section_id, value) { + updatePlaceholders(this, section_id); + + return deviceSectionExists(section_id, value) + ? _('A configuration for the device "%s" already exists').format(value) : true; + }; + o.onchange = function(ev, section_id, values) { + updatePlaceholders(this, section_id); + }; + o.depends('type', ''); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'ifname_single', _('Base device')); + o.readonly = !isNew; + o.rmempty = false; + o.noaliases = true; + o.default = (dev ? dev.getName() : '').match(/^.+\.\d+$/) ? dev.getName().replace(/\.\d+$/, '') : ''; + o.ucioption = 'ifname'; + o.filter = function(section_id, value) { + var dev = network.instantiateDevice(value); + return (dev.getType() != 'wifi' || dev.isUp()); + }; + o.validate = function(section_id, value) { + updatePlaceholders(this, section_id); + + if (isNew) { + var type = this.section.formvalue(section_id, 'type'), + name = this.section.getUIElement(section_id, 'name_complex'); + + if (type == 'macvlan' && value && name && !name.isChanged()) { + var i = 0; + + while (deviceSectionExists(section_id, '%smac%d'.format(value, i))) + i++; + + name.setValue('%smac%d'.format(value, i)); + name.triggerValidation(); + } + } + + return true; + }; + o.onchange = function(ev, section_id, values) { + updatePlaceholders(this, section_id); + }; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + o.depends('type', 'macvlan'); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'vid', _('VLAN ID')); + o.readonly = !isNew; + o.datatype = 'range(1, 4094)'; + o.rmempty = false; + o.default = (dev ? dev.getName() : '').match(/^.+\.\d+$/) ? dev.getName().replace(/^.+\./, '') : ''; + o.validate = function(section_id, value) { + var base = this.section.formvalue(section_id, 'ifname_single'), + vid = this.section.formvalue(section_id, 'vid'), + name = this.section.getUIElement(section_id, 'name_complex'); + + if (base && vid && name && !name.isChanged() && isNew) { + name.setValue('%s.%d'.format(base, vid)); + name.triggerValidation(); + } + + return true; + }; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + + o = this.replaceOption(s, 'devgeneral', form.ListValue, 'mode', _('Mode')); + o.value('vepa', _('VEPA (Virtual Ethernet Port Aggregator)', 'MACVLAN mode')); + o.value('private', _('Private (Prevent communication between MAC VLANs)', 'MACVLAN mode')); + o.value('bridge', _('Bridge (Support direct communication between MAC VLANs)', 'MACVLAN mode')); + o.value('passthru', _('Pass-through (Mirror physical device to single MAC VLAN)', 'MACVLAN mode')); + o.depends('type', 'macvlan'); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'name_complex', _('Device name')); + o.rmempty = false; + o.datatype = 'maxlength(15)'; + o.readonly = !isNew; + o.ucioption = 'name'; + o.validate = function(section_id, value) { + var dev = network.instantiateDevice(value); + + if (deviceSectionExists(section_id, value) || (isNew && (dev.dev || {}).idx)) + return _('The device name "%s" is already taken').format(value); + + return true; + }; + o.depends({ type: '', '!reverse': true }); + + o = this.replaceOption(s, 'devadvanced', form.DynamicList, 'ingress_qos_mapping', _('Ingress QoS mapping'), _('Defines a mapping of VLAN header priority to the Linux internal packet priority on incoming frames')); + o.rmempty = true; + o.validate = validateQoSMap; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + + o = this.replaceOption(s, 'devadvanced', form.DynamicList, 'egress_qos_mapping', _('Egress QoS mapping'), _('Defines a mapping of Linux internal packet priority to VLAN header priority but for outgoing frames')); + o.rmempty = true; + o.validate = validateQoSMap; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'ifname_multi-bond', _('Aggregation ports')); + o.size = 10; + o.rmempty = true; + o.multiple = true; + o.noaliases = true; + o.nobridges = true; + o.ucioption = 'ports'; + o.default = L.toArray(dev ? dev.getPorts() : null).filter(function(p) { return p.getType() != 'wifi' }).map(function(p) { return p.getName() }); + o.filter = function(section_id, device_name) { + var bridge_name = uci.get('network', section_id, 'name'), + choice_dev = network.instantiateDevice(device_name), + parent_dev = choice_dev.getParent(); + + /* only show wifi networks which are already present in "option ifname" */ + if (choice_dev.getType() == 'wifi') { + var ifnames = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ifnames.length; i++) + if (ifnames[i] == device_name) + return true; + + return false; + } + + return (!parent_dev || parent_dev.getName() != bridge_name); + }; + o.description = _('Specifies the wired ports to attach to this bonding.') + o.onchange = function(ev, section_id, values) { + ss.updatePorts(values); + + return ss.parse().then(function() { + ss.redraw(); + }); + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devgeneral', form.ListValue, 'policy', _('Bonding Policy')); + o.default = 'active-backup'; + o.value('active-backup', _('Active backup')); + o.value('balance-rr', _('Round robin')); + o.value('balance-xor', _('Transmit hash - balance-xor')); + o.value('broadcast', _('Broadcast')); + o.value('802.3ad', _('LACP - 802.3ad')); + o.value('balance-tlb', _('Adaptive transmit load balancing')); + o.value('balance-alb', _('Adaptive load balancing')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'active-backup': + case '0': + return 'active-backup'; + + case 'balance-rr': + case '1': + return 'balance-rr'; + + case 'balance-xor': + case '2': + return 'balance-xor'; + + case 'broadcast': + case '3': + return 'broadcast'; + + case '802.3ad': + case '4': + return '802.3ad'; + + case 'balance-tlb': + case '5': + return 'balance-tlb'; + + case 'balance-alb': + case '6': + return 'balance-alb'; + + default: + return 'active-backup'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'all_ports_active', _('All ports active'), _('Allow receiving on inactive ports')); + o.default = o.disabled; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, '_net_device_primary', _('Primary Device')); + o.ucioption = 'primary'; + o.rmempty = true; + o.noaliases = true; + o.nobridges = true; + o.optional = false; + o.depends({'type': 'bonding', 'policy': 'active-backup'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'xmit_hash_policy', _('Slave selection hash policy')); + o.default = ''; + o.value('', ''); + o.value('layer2', _('Layer 2')); + o.value('layer2+3', _('Layer 2+3')); + o.value('layer3+4', _('Layer 3+4')); + o.value('encap2+3', _('Encap 2+3')); + o.value('encap3+4', _('Encap 3+4')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'layer2': + case '0': + return 'layer2'; + + case 'layer2+3': + case '1': + return 'layer2+3'; + + case 'layer3+4': + case '2': + return 'layer3+4'; + + case 'encap2+3': + case '4': + return 'encap2+3'; + + case 'encap3+4': + case '5': + return 'encap3+4'; + + default: + return ''; + } + }; + o.depends({'type': 'bonding', 'policy': 'balance-xor'}); + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + o.depends({'type': 'bonding', 'policy': 'balance-tlb'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ad_actor_system', _('MAC address for LACPDUs')); + o.description = _('This specifies the mac-address for the actor in protocol packet exchanges (LACPDUs). The value cannot be NULL or multicast.'); + o.datatype = 'macaddr'; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ad_actor_sys_prio', _('Priority')); + o.description = _('This specifies the AD system priority'); + o.placeholder = '65535'; + o.datatype = 'range(1, 65535)'; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'ad_select', _('802.3ad aggregation logic')); + o.default = ''; + o.value('', ''); + o.value('stable', _('Stable')); + o.value('bandwidth', _('Bandwidth')); + o.value('count', _('Count')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'stable': + case '0': + return 'stable'; + + case 'bandwidth': + case '1': + return 'bandwidth'; + + case 'count': + case '2': + return 'count'; + + default: + return ''; + } + }; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'lacp_rate', _('802.3ad LACPDU packet rate')); + o.default = ''; + o.value('', ''); + o.value('slow', _('Slow (every 30 seconds)')); + o.value('fast', _('Fast (every second)')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'slow': + case '0': + return 'slow'; + + case 'fast': + case '1': + return 'fast'; + + default: + return ''; + } + }; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'min_links', _('Min Links'), _('Minimum number of active links')); + o.placeholder = '1'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'packets_per_slave', _('Packets per slave')); + o.description = _('Number of packets to transmit through a slave before moving to the next one. Slave is chosen at random when 0.'); + o.placeholder = '1'; + o.datatype = 'range(1, 65535)'; + o.depends({'type': 'bonding', 'policy': 'balance-rr'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'lp_interval', _('Learning packets Interval')); + o.description = _('Number of seconds between sent learning packets'); + o.placeholder = '1'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'policy': 'balance-tlb'}); + o.depends({'type': 'bonding', 'policy': 'balance-alb'}); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'dynamic_lb', _('Dynamic load balance'), _('distribute traffic according to port load')); + o.default = o.disabled; + o.depends({'type': 'bonding', 'policy': 'balance-tlb'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'resend_igmp', _('IGMP reports')); + o.description = _('Specifies the number of IGMP membership reports to be issued after a failover event'); + o.placeholder = '1'; + o.datatype = 'range(0, 255)'; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'num_peer_notif', _('Peer notifications')); + o.description = _('Specify the number of peer notifications to be issued after a failover event.'); + o.placeholder = '1'; + o.datatype = 'range(0, 255)'; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'primary_reselect', _('Primary port reselection policy')); + o.default = ''; + o.value('', ''); + o.value('always', _('Always')); + o.value('better', _('Better')); + o.value('failure', _('Failure')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'always': + case '0': + return 'always'; + + case 'better': + case '1': + return 'better'; + + case 'failure': + case '2': + return 'failure'; + + default: + return 'always'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'failover_mac', _('MAC address selection policy')); + o.default = ''; + o.value('none', _('none')); + o.value('active', _('Active')); + o.value('follow', _('Follow')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'none': + case '0': + return 'none'; + + case 'active': + case '1': + return 'active'; + + case 'follow': + case '2': + return 'follow'; + + default: + return 'none'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'monitor_mode', _('Link monitoring mode'), + !L.hasSystemFeature('mii_tool') ? ''+ + _('Install %s').format('mii-tool') + '' : null); + o.default = ''; + o.value('arp', _('ARP link monitoring')); + o.value('mii', _('MII link monitoring')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'arp': + case '1': + return 'arp'; + + case 'mii': + case '2': + return 'mii'; + + default: + return 'mii'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'monitor_interval', _('Monitor Interval')); + o.description = _('Specifies the link monitoring frequency in milliseconds'); + o.placeholder = '100'; + o.datatype = 'uinteger'; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.DynamicList, 'arp_target', _('ARP monitor target IP address')); + o.datatype = 'ipaddr'; + o.depends({'type': 'bonding', 'monitor_mode': 'arp'}); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'arp_all_targets', _('All ARP Targets'), _('All ARP targets must be reachable to consider the link valid')); + o.default = o.disabled; + o.depends({'type': 'bonding', 'monitor_mode': 'arp'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'arp_validate', _('ARP validation policy')); + o.default = ''; + o.value('none', _('None')); + o.value('active', _('Active')); + o.value('backup', _('Backup')); + o.value('all', _('All')); + o.value('filter', _('Filter')); + o.value('filter_active', _('Filter active')); + o.value('filter_backup', _('Filter backup')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'none': + case '0': + return 'none'; + + case 'active': + case '1': + return 'active'; + + case 'backup': + case '2': + return 'backup'; + + case 'all': + case '3': + return 'all'; + + case 'filter': + case '4': + return 'filter'; + + case 'filter_active': + case '5': + return 'filter_active'; + + case 'filter_backup': + case '6': + return 'filter_backup'; + + default: + return 'none'; + } + }; + o.depends({'type': 'bonding', 'policy': 'balance-rr' , 'monitor_mode': 'arp'}); + o.depends({'type': 'bonding', 'policy': 'active-backup' , 'monitor_mode': 'arp'}); + o.depends({'type': 'bonding', 'policy': 'balance-xor' , 'monitor_mode': 'arp'}); + o.depends({'type': 'bonding', 'policy': 'broadcast' , 'monitor_mode': 'arp'}); + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'use_carrier', _('Use Carrier'), _('Use carrier status instead of MII result')); + o.default = o.disabled; + o.depends({'type': 'bonding', 'monitor_mode': 'mii'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'updelay', _('Monitor link-up delay')); + o.description = _('Delay before enabling port after MII link up event (msec)'); + o.placeholder = '0'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'monitor_mode': 'mii'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'downdelay', _('Monitor link-down delay')); + o.description = _('Delay before enabling port after MII link down event (msec)'); + o.placeholder = '0'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'monitor_mode': 'mii'}); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'ifname_multi-bridge', _('Bridge ports')); + o.size = 10; + o.rmempty = true; + o.multiple = true; + o.noaliases = true; + o.nobridges = true; + o.ucioption = 'ports'; + o.default = L.toArray(dev ? dev.getPorts() : null).filter(function(p) { return p.getType() != 'wifi' }).map(function(p) { return p.getName() }); + o.filter = function(section_id, device_name) { + var bridge_name = uci.get('network', section_id, 'name'), + choice_dev = network.instantiateDevice(device_name), + parent_dev = choice_dev.getParent(); + + /* only show wifi networks which are already present in "option ifname" */ + if (choice_dev.getType() == 'wifi') { + var ifnames = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ifnames.length; i++) + if (ifnames[i] == device_name) + return true; + + return false; + } + + return (!parent_dev || parent_dev.getName() != bridge_name); + }; + o.description = _('Specifies the wired ports to attach to this bridge. In order to attach wireless networks, choose the associated interface as network in the wireless settings.') + o.onchange = function(ev, section_id, values) { + ss.updatePorts(values); + + return ss.parse().then(function() { + ss.redraw(); + }); + }; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'bridge_empty', _('Bring up empty bridge'), _('Bring up the bridge interface even if no ports are attached')); + o.default = o.disabled; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'priority', _('Priority')); + o.placeholder = '32767'; + o.datatype = 'range(0, 65535)'; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ageing_time', _('Ageing time'), _('Timeout in seconds for learned MAC addresses in the forwarding database')); + o.placeholder = '30'; + o.datatype = 'uinteger'; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'stp', _('Enable STP'), _('Enables the Spanning Tree Protocol on this bridge')); + o.default = o.disabled; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'hello_time', _('Hello interval'), _('Interval in seconds for STP hello packets')); + o.placeholder = '2'; + o.datatype = 'range(1, 10)'; + o.depends({ type: 'bridge', stp: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'forward_delay', _('Forward delay'), _('Time in seconds to spend in listening and learning states')); + o.placeholder = '15'; + o.datatype = 'range(2, 30)'; + o.depends({ type: 'bridge', stp: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'max_age', _('Maximum age'), _('Timeout in seconds until topology updates on link loss')); + o.placeholder = '20'; + o.datatype = 'range(6, 40)'; + o.depends({ type: 'bridge', stp: '1' }); + + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'igmp_snooping', _('Enable IGMP snooping'), _('Enables IGMP snooping on this bridge')); + o.default = o.disabled; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'hash_max', _('Maximum snooping table size')); + o.placeholder = '512'; + o.datatype = 'uinteger'; + o.depends({ type: 'bridge', igmp_snooping: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'multicast_querier', _('Enable multicast querier')); + o.defaults = { '1': [{'igmp_snooping': '1'}], '0': [{'igmp_snooping': '0'}] }; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'robustness', _('Robustness'), _('The robustness value allows tuning for the expected packet loss on the network. If a network is expected to be lossy, the robustness value may be increased. IGMP is robust to (Robustness-1) packet losses')); + o.placeholder = '2'; + o.datatype = 'min(1)'; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'query_interval', _('Query interval'), _('Interval in centiseconds between multicast general queries. By varying the value, an administrator may tune the number of IGMP messages on the subnet; larger values cause IGMP Queries to be sent less often')); + o.placeholder = '12500'; + o.datatype = 'uinteger'; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'query_response_interval', _('Query response interval'), _('The max response time in centiseconds inserted into the periodic general queries. By varying the value, an administrator may tune the burstiness of IGMP messages on the subnet; larger values make the traffic less bursty, as host responses are spread out over a larger interval')); + o.placeholder = '1000'; + o.datatype = 'uinteger'; + o.validate = function(section_id, value) { + var qiopt = L.toArray(this.map.lookupOption('query_interval', section_id))[0], + qival = qiopt ? (qiopt.formvalue(section_id) || qiopt.placeholder) : ''; + + if (value != '' && qival != '' && +value >= +qival) + return _('The query response interval must be lower than the query interval value'); + + return true; + }; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'last_member_interval', _('Last member interval'), _('The max response time in centiseconds inserted into group-specific queries sent in response to leave group messages. It is also the amount of time between group-specific query messages. This value may be tuned to modify the "leave latency" of the network. A reduced value results in reduced time to detect the loss of the last member of a group')); + o.placeholder = '100'; + o.datatype = 'uinteger'; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'mtu', _('MTU')); + o.datatype = 'range(576, 9200)'; + o.validate = function(section_id, value) { + var parent_mtu = (dev && dev.getType() == 'vlan') ? (parent_dev ? parent_dev.getMTU() : null) : null; + + if (parent_mtu !== null && +value > parent_mtu) + return _('The MTU must not exceed the parent device MTU of %d bytes').format(parent_mtu); + + return true; + }; + + o = this.replaceOption(s, 'devgeneral', form.Value, 'macaddr', _('MAC address')); + o.datatype = 'macaddr'; + + o = this.replaceOption(s, 'devgeneral', form.Value, 'peer_name', _('Peer device name')); + o.rmempty = true; + o.datatype = 'maxlength(15)'; + o.depends('type', 'veth'); + o.load = function(section_id) { + var sections = uci.sections('network', 'device'), + idx = 0; + + for (var i = 0; i < sections.length; i++) + if (sections[i]['.name'] == section_id) + break; + else if (sections[i].type == 'veth') + idx++; + + this.placeholder = 'veth%d'.format(idx); + + return form.Value.prototype.load.apply(this, arguments); + }; + + o = this.replaceOption(s, 'devgeneral', form.Value, 'peer_macaddr', _('Peer MAC address')); + o.rmempty = true; + o.datatype = 'macaddr'; + o.depends('type', 'veth'); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'txqueuelen', _('TX queue length')); + o.placeholder = dev ? dev._devstate('qlen') : ''; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'autoneg', _('Autonegociation')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'gro', _('Generic Receive Offload (GRO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'gso', _('Generic Segmentation Offload (GSO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'tso', _('TCP Segmentation Offload (TSO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'lro', _('Large Receive Offload (LRO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'ufo', _('UDP Fragmentation Offload (UFO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'speed', _('Speed')); + o.placeholder = dev ? dev.getSpeed() : ''; + o.default = ''; + o.rmempty = true; + o.datatype = 'uinteger'; + o.depends('autoneg', '0'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'duplex', _('Duplex')); + o.default = ''; + o.value('', _('unknown')); + o.value('half', _('half')); + o.value('full', _('full')); + o.depends('autoneg', '0'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'promisc', _('Enable promiscuous mode')); + o.sysfs_default = (dev && dev.dev && dev.dev.flags) ? dev.dev.flags.promisc : null; + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'rpfilter', _('Reverse path filter')); + o.default = ''; + o.value('', _('disabled')); + o.value('loose', _('Loose filtering')); + o.value('strict', _('Strict filtering')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'loose': + case '1': + return 'loose'; + + case 'strict': + case '2': + return 'strict'; + + default: + return ''; + } + }; + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'acceptlocal', _('Accept local'), _('Accept packets with local source addresses')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/accept_local'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'sendredirects', _('Send ICMP redirects')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/send_redirects'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'arp_accept', _('Honor gratuitous ARP'), _('When enabled, new ARP table entries are added from received gratuitous ARP requests or replies, otherwise only preexisting table entries are updated, but no new hosts are learned.')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/arp_accept'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'drop_gratuitous_arp', _('Drop gratuitous ARP'), _('Drop all gratuitous ARP frames, for example if there’s a known good ARP proxy on the network and such frames need not be used or in the case of 802.11, must not be used to prevent attacks.')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/drop_gratuitous_arp'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'neighreachabletime', _('Neighbour cache validity'), _('Time in milliseconds')); + o.placeholder = '30000'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'neighgcstaletime', _('Stale neighbour cache timeout'), _('Timeout in seconds')); + o.placeholder = '60'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'neighlocktime', _('Minimum ARP validity time'), _('Minimum required time in seconds before an ARP entry may be replaced. Prevents ARP cache thrashing.')); + o.placeholder = '0'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ttl', _('Force TTL'), _('Some LTE providers detect tethering by inspecting packet TTL values')); + o.placeholder = '65'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devgeneral', cbiFlagTristate, 'ipv6', _('Enable IPv6')); + o.sysfs = '!/proc/sys/net/ipv6/conf/%s/disable_ipv6'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'ip6segmentrouting', _('Enable IPv6 segment routing')); + o.sysfs = '/proc/sys/net/ipv6/conf/%s/seg6_enabled'.format(devname || 'default'); + o.depends('ipv6', /1/); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'drop_unsolicited_na', _('Drop unsolicited NA'), _('Drop all unsolicited neighbor advertisements, for example if there’s a known good NA proxy on the network and such frames need not be used or in the case of 802.11, must not be used to prevent attacks.')); + o.sysfs = '/proc/sys/net/ipv6/conf/%s/drop_unsolicited_na'.format(devname || 'default'); + o.depends('ipv6', /1/); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'mtu6', _('IPv6 MTU')); + o.datatype = 'max(9200)'; + o.depends('ipv6', /1/); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'dadtransmits', _('DAD transmits'), _('Amount of Duplicate Address Detection probes to send')); + o.placeholder = '1'; + o.datatype = 'uinteger'; + o.depends('ipv6', /1/); + + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'multicast', _('Enable multicast support')); + o.sysfs_default = (dev && dev.dev && dev.dev.flags) ? dev.dev.flags.multicast : null; + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'igmpversion', _('Force IGMP version')); + o.value('', _('No enforcement')); + o.value('1', _('Enforce IGMPv1')); + o.value('2', _('Enforce IGMPv2')); + o.value('3', _('Enforce IGMPv3')); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'mldversion', _('Force MLD version')); + o.value('', _('No enforcement')); + o.value('1', _('Enforce MLD version 1')); + o.value('2', _('Enforce MLD version 2')); + o.depends('multicast', /1/); + + if (isBridgePort(dev)) { + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'learning', _('Enable MAC address learning')); + o.sysfs = '/sys/class/net/%s/brport/learning'.format(devname || 'default'); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'unicast_flood', _('Enable unicast flooding')); + o.sysfs = '/sys/class/net/%s/brport/unicast_flood'.format(devname || 'default'); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'isolate', _('Port isolation'), _('Only allow communication with non-isolated bridge ports when enabled')); + o.sysfs = '/sys/class/net/%s/brport/isolated'.format(devname || 'default'); + + o = this.replaceOption(s, 'brport', form.ListValue, 'multicast_router', _('Multicast routing')); + o.value('', _('Never')); + o.value('1', _('Learn')); + o.value('2', _('Always')); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'multicast_to_unicast', _('Multicast to unicast'), _('Forward multicast packets as unicast packets on this device.')); + o.sysfs = '/sys/class/net/%s/brport/multicast_to_unicast'.format(devname || 'default'); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'multicast_fast_leave', _('Enable multicast fast leave')); + o.sysfs = '/sys/class/net/%s/brport/multicast_fast_leave'.format(devname || 'default'); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'drop_v4_unicast_in_l2_multicast', _('Drop nested IPv4 unicast'), _('Drop layer 2 multicast frames containing IPv4 unicast packets.')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/drop_unicast_in_l2_multicast'.format(devname || 'default'); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'drop_v6_unicast_in_l2_multicast', _('Drop nested IPv6 unicast'), _('Drop layer 2 multicast frames containing IPv6 unicast packets.')); + o.sysfs = '/proc/sys/net/ipv6/conf/%s/drop_unicast_in_l2_multicast'.format(devname || 'default'); + o.depends('multicast', /1/); + } + + o = this.replaceOption(s, 'bridgevlan', form.Flag, 'vlan_filtering', _('Enable VLAN filtering')); + o.depends('type', 'bridge'); + o.updateDefaultValue = function(section_id) { + var device = uci.get('network', s.section, 'name'), + uielem = this.getUIElement(section_id), + has_vlans = false; + + uci.sections('network', 'bridge-vlan', function(bvs) { + has_vlans = has_vlans || (bvs.device == device); + }); + + this.default = has_vlans ? this.enabled : this.disabled; + + if (uielem && !uielem.isChanged()) + uielem.setValue(this.default); + }; + + o = this.replaceOption(s, 'bridgevlan', form.SectionValue, 'bridge-vlan', form.TableSection, 'bridge-vlan'); + o.depends('type', 'bridge'); + + ss = o.subsection; + ss.addremove = true; + ss.anonymous = true; + + ss.renderHeaderRows = function(/* ... */) { + var node = form.TableSection.prototype.renderHeaderRows.apply(this, arguments); + + node.querySelectorAll('.th').forEach(function(th) { + th.classList.add('left'); + th.classList.add('middle'); + }); + + return node; + }; + + ss.filter = function(section_id) { + var devname = uci.get('network', s.section, 'name'); + return (uci.get('network', section_id, 'device') == devname); + }; + + ss.render = function(/* ... */) { + return form.TableSection.prototype.render.apply(this, arguments).then(L.bind(function(node) { + node.style.overflow = 'auto hidden'; + node.style.paddingTop = '1em'; + + if (this.node) + this.node.parentNode.replaceChild(node, this.node); + + this.node = node; + + return node; + }, this)); + }; + + ss.redraw = function() { + return this.load().then(L.bind(this.render, this)); + }; + + ss.updatePorts = function(ports) { + var devices = ports.map(function(port) { + return network.instantiateDevice(port) + }).filter(function(dev) { + return dev.getType() != 'wifi' || dev.isUp(); + }).sort(function(a, b) { + return L.naturalCompare(a.getName(), b.getName()); + }); + + this.children = this.children.filter(function(opt) { return !opt.option.match(/^port_/) }); + + for (var i = 0; i < devices.length; i++) { + o = ss.option(cbiTagValue, 'port_%s'.format(sfh(devices[i].getName())), renderDevBadge(devices[i]), renderPortStatus(devices[i])); + o.port = devices[i].getName(); + } + + var section_ids = this.cfgsections(), + device_names = devices.reduce(function(names, dev) { names[dev.getName()] = true; return names }, {}); + + for (var i = 0; i < section_ids.length; i++) { + var old_spec = L.toArray(uci.get('network', section_ids[i], 'ports')), + new_spec = old_spec.filter(function(spec) { return device_names[spec.replace(/:[ut*]+$/, '')] }); + + if (old_spec.length != new_spec.length) + uci.set('network', section_ids[i], 'ports', new_spec.length ? new_spec : null); + } + }; + + ss.handleAdd = function(ev) { + return s.parse().then(L.bind(function() { + var device = uci.get('network', s.section, 'name'), + section_ids = this.cfgsections(), + section_id = null, + max_vlan_id = 0; + + if (!device) + return; + + for (var i = 0; i < section_ids.length; i++) { + var vid = +uci.get('network', section_ids[i], 'vlan'); + + if (vid > max_vlan_id) + max_vlan_id = vid; + } + + section_id = uci.add('network', 'bridge-vlan'); + uci.set('network', section_id, 'device', device); + uci.set('network', section_id, 'vlan', max_vlan_id + 1); + + s.children.forEach(function(opt) { + switch (opt.option) { + case 'type': + case 'name_complex': + var input = opt.map.findElement('id', 'widget.%s'.format(opt.cbid(s.section))); + if (input) + input.disabled = true; + break; + } + }); + + s.getOption('vlan_filtering').updateDefaultValue(s.section); + + s.map.addedVLANs = s.map.addedVLANs || []; + s.map.addedVLANs.push(section_id); + + return this.redraw(); + }, this)); + }; + + ss.handleRemove = function(section_id) { + this.map.data.remove('network', section_id); + s.map.addedVLANs = (s.map.addedVLANs || []).filter(function(sid) { + return sid != section_id; + }); + + return this.redraw(); + }; + + o = ss.option(form.Value, 'vlan', _('VLAN ID')); + o.datatype = 'range(1, 4094)'; + + o.renderWidget = function(/* ... */) { + var node = form.Value.prototype.renderWidget.apply(this, arguments); + + node.style.width = '5em'; + + return node; + }; + + o.validate = function(section_id, value) { + var section_ids = this.section.cfgsections(); + + for (var i = 0; i < section_ids.length; i++) { + if (section_ids[i] == section_id) + continue; + + if (uci.get('network', section_ids[i], 'vlan') == value) + return _('The VLAN ID must be unique'); + } + + return true; + }; + + o = ss.option(form.Flag, 'local', _('Local')); + o.default = o.enabled; + + var ports = []; + + var seen_ports = {}; + + L.toArray(uci.get('network', s.section, 'ports')).forEach(function(port) { + seen_ports[port] = true; + }); + + uci.sections('network', 'bridge-vlan', function(bvs) { + if (uci.get('network', s.section, 'name') != bvs.device) + return; + + L.toArray(bvs.ports).forEach(function(portspec) { + var m = portspec.match(/^([^:]+)(?::[ut*]+)?$/); + + if (m) + seen_ports[m[1]] = true; + }); + }); + + for (var port_name in seen_ports) + ports.push(port_name); + + ss.updatePorts(ports); + }, + + updateDevBadge: updateDevBadge, + updatePortStatus: updatePortStatus +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js index d51c0b33d..dcd86585a 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -5,7 +5,9 @@ 'require rpc'; 'require uci'; 'require form'; +'require network'; 'require validation'; +'require tools.widgets as widgets'; var callHostHints, callDUIDHints, callDHCPLeases, CBILeaseStatus, CBILease6Status; @@ -34,8 +36,8 @@ CBILeaseStatus = form.DummyValue.extend({ E('table', { 'id': 'lease_status_table', 'class': 'table' }, [ E('tr', { 'class': 'tr table-titles' }, [ E('th', { 'class': 'th' }, _('Hostname')), - E('th', { 'class': 'th' }, _('IPv4-Address')), - E('th', { 'class': 'th' }, _('MAC-Address')), + E('th', { 'class': 'th' }, _('IPv4 address')), + E('th', { 'class': 'th' }, _('MAC address')), E('th', { 'class': 'th' }, _('Lease time remaining')) ]), E('tr', { 'class': 'tr placeholder' }, [ @@ -53,7 +55,7 @@ CBILease6Status = form.DummyValue.extend({ E('table', { 'id': 'lease6_status_table', 'class': 'table' }, [ E('tr', { 'class': 'tr table-titles' }, [ E('th', { 'class': 'th' }, _('Host')), - E('th', { 'class': 'th' }, _('IPv6-Address')), + E('th', { 'class': 'th' }, _('IPv6 address')), E('th', { 'class': 'th' }, _('DUID')), E('th', { 'class': 'th' }, _('Lease time remaining')) ]), @@ -65,6 +67,73 @@ CBILease6Status = form.DummyValue.extend({ } }); +function calculateNetwork(addr, mask) { + addr = validation.parseIPv4(String(addr)); + + if (!isNaN(mask)) + mask = validation.parseIPv4(network.prefixToMask(+mask)); + else + mask = validation.parseIPv4(String(mask)); + + if (addr == null || mask == null) + return null; + + return [ + [ + addr[0] & (mask[0] >>> 0 & 255), + addr[1] & (mask[1] >>> 0 & 255), + addr[2] & (mask[2] >>> 0 & 255), + addr[3] & (mask[3] >>> 0 & 255) + ].join('.'), + mask.join('.') + ]; +} + +function generateDnsmasqInstanceEntry(data) { + const nameValueMap = new Map(Object.entries(data)); + let formatString = nameValueMap.get('.index') + ' (' + _('Name') + (nameValueMap.get('.anonymous') ? ': dnsmasq[' + nameValueMap.get('.index') + ']': ': ' + nameValueMap.get('.name')); + + if (data.domain) { + formatString += ', ' + _('Domain') + ': ' + data.domain; + } + if (data.local) { + formatString += ', ' + _('Local') + ': ' + data.local; + } + formatString += ')'; + + return [nameValueMap.get('.name'), formatString]; +} + +function getDHCPPools() { + return uci.load('dhcp').then(function() { + let sections = uci.sections('dhcp', 'dhcp'), + tasks = [], pools = []; + + for (var i = 0; i < sections.length; i++) { + if (sections[i].ignore == '1' || !sections[i].interface) + continue; + + tasks.push(network.getNetwork(sections[i].interface).then(L.bind(function(section_id, net) { + var cidr = net ? (net.getIPAddrs()[0] || '').split('/') : null; + + if (cidr && cidr.length == 2) { + var net_mask = calculateNetwork(cidr[0], cidr[1]); + + pools.push({ + section_id: section_id, + network: net_mask[0], + netmask: net_mask[1] + }); + } + }, null, sections[i]['.name']))); + } + + return Promise.all(tasks).then(function() { + return pools; + }); + }); +} + function validateHostname(sid, s) { if (s == null || s == '') return true; @@ -72,7 +141,7 @@ function validateHostname(sid, s) { if (s.length > 256) return _('Expecting: %s').format(_('valid hostname')); - var labels = s.replace(/^\.+|\.$/g, '').split(/\./); + var labels = s.replace(/^\*?\.?|\.$/g, '').split(/\./); for (var i = 0; i < labels.length; i++) if (!labels[i].match(/^[a-z0-9_](?:[a-z0-9-]{0,61}[a-z0-9])?$/i)) @@ -102,13 +171,15 @@ function validateServerSpec(sid, s) { if (s == null || s == '') return true; - var m = s.match(/^(?:\/(.+)\/)?(.*)$/); + var m = s.match(/^(\/.*\/)?(.*)$/); if (!m) return _('Expecting: %s').format(_('valid hostname')); - var res = validateAddressList(sid, m[1]); - if (res !== true) - return res; + if (m[1] != '//' && m[1] != '/#/') { + var res = validateAddressList(sid, m[1]); + if (res !== true) + return res; + } if (m[2] == '' || m[2] == '#') return true; @@ -138,283 +209,984 @@ function validateServerSpec(sid, s) { return true; } +function expandAndFormatMAC(macs) { + let result = []; + + macs.forEach(mac => { + if (isValidMAC(mac)) { + const expandedMac = mac.split(':').map(part => { + return (part.length === 1 && part !== '*') ? '0' + part : part; + }).join(':').toUpperCase(); + result.push(expandedMac); + } + }); + + return result.length ? result : null; +} + +function isValidMAC(sid, s) { + if (!s) + return true; + + let macaddrs = L.toArray(s); + + for (var i = 0; i < macaddrs.length; i++) + if (!macaddrs[i].match(/^(([0-9a-f]{1,2}|\*)[:-]){5}([0-9a-f]{1,2}|\*)$/i)) + return _('Expecting a valid MAC address, optionally including wildcards') + _('; invalid MAC: ') + macaddrs[i]; + + return true; +} + +function validateMACAddr(pools, sid, s) { + if (s == null || s == '') + return true; + + var leases = uci.sections('dhcp', 'host'), + this_macs = L.toArray(s).map(function(m) { return m.toUpperCase() }); + + for (var i = 0; i < pools.length; i++) { + var this_net_mask = calculateNetwork(this.section.formvalue(sid, 'ip'), pools[i].netmask); + + if (!this_net_mask) + continue; + + for (var j = 0; j < leases.length; j++) { + if (leases[j]['.name'] == sid || !leases[j].ip) + continue; + + var lease_net_mask = calculateNetwork(leases[j].ip, pools[i].netmask); + + if (!lease_net_mask || this_net_mask[0] != lease_net_mask[0]) + continue; + + var lease_macs = L.toArray(leases[j].mac).map(function(m) { return m.toUpperCase() }); + + for (var k = 0; k < lease_macs.length; k++) + for (var l = 0; l < this_macs.length; l++) + if (lease_macs[k] == this_macs[l]) + return _('The MAC address %h is already used by another static lease in the same DHCP pool').format(this_macs[l]); + } + } + + return isValidMAC(sid, s); +} + return view.extend({ load: function() { return Promise.all([ callHostHints(), - callDUIDHints() + callDUIDHints(), + getDHCPPools(), + network.getNetworks(), + uci.load('firewall') ]); }, - render: function(hosts_duids) { + render: function(hosts_duids_pools) { var has_dhcpv6 = L.hasSystemFeature('dnsmasq', 'dhcpv6') || L.hasSystemFeature('odhcpd'), - hosts = hosts_duids[0], - duids = hosts_duids[1], - m, s, o, ss, so; + hosts = hosts_duids_pools[0], + duids = hosts_duids_pools[1], + pools = hosts_duids_pools[2], + networks = hosts_duids_pools[3], + m, s, o, ss, so, dnss; - m = new form.Map('dhcp', _('DHCP and DNS'), _('Dnsmasq is a combined DHCP-Server and DNS-Forwarder for NAT firewalls')); + let noi18nstrings = { + etc_hosts: '/etc/hosts', + etc_ethers: '/etc/ethers', + localhost_v6: '::1', + loopback_slash_8_v4: '127.0.0.0/8', + not_found: 'Not found', + nxdomain: 'NXDOMAIN', + rfc_1918_link: 'RFC1918', + rfc_4193_link: 'RFC4193', + rfc_4291_link: 'RFC4291', + rfc_6303_link: 'RFC6303', + reverse_arpa: '*.IN-ADDR.ARPA,*.IP6.ARPA', + servers_file_entry01: 'server=1.2.3.4', + servers_file_entry02: 'server=/domain/1.2.3.4', - s = m.section(form.TypedSection, 'dnsmasq', _('Server Settings')); - s.anonymous = true; - s.addremove = false; + }; - s.tab('general', _('General Settings')); - s.tab('files', _('Resolv and Hosts Files')); - s.tab('tftp', _('TFTP Settings')); - s.tab('advanced', _('Advanced Settings')); + const recordtypes = [ + 'ANY', + 'A', + 'AAAA', + 'ALIAS', + 'CAA', + 'CERT', + 'CNAME', + 'DS', + 'HINFO', + 'HIP', + 'HTTPS', + 'KEY', + 'LOC', + 'MX', + 'NAPTR', + 'NS', + 'OPENPGPKEY', + 'PTR', + 'RP', + 'SIG', + 'SOA', + 'SRV', + 'SSHFP', + 'SVCB', + 'TLSA', + 'TXT', + 'URI', + ] + + function customi18n(template, values) { + if (!values) + values = noi18nstrings; + return template.replace(/\{(\w+)\}/g, (match, key) => values[key] || match); + }; + + m = new form.Map('dhcp', _('DHCP and DNS'), + _('Dnsmasq is a lightweight DHCP server and DNS forwarder.')); + + s = m.section(form.TypedSection, 'dnsmasq'); + s.anonymous = false; + s.addremove = true; + s.addbtntitle = _('Add server instance', 'Dnsmasq instance'); + + s.renderContents = function(/* ... */) { + var renderTask = form.TypedSection.prototype.renderContents.apply(this, arguments), + sections = this.cfgsections(); + + return Promise.resolve(renderTask).then(function(nodes) { + if (sections.length < 2) { + nodes.querySelector('#cbi-dhcp-dnsmasq > h3').remove(); + nodes.querySelector('#cbi-dhcp-dnsmasq > .cbi-section-remove').remove(); + } + else { + nodes.querySelectorAll('#cbi-dhcp-dnsmasq > .cbi-section-remove').forEach(function(div, i) { + var section = uci.get('dhcp', sections[i]), + hline = div.nextElementSibling, + btn = div.firstElementChild; + + if (!section || section['.anonymous']) { + hline.innerText = i ? _('Unnamed instance #%d', 'Dnsmasq instance').format(i+1) : _('Default instance', 'Dnsmasq instance'); + btn.innerText = i ? _('Remove instance #%d', 'Dnsmasq instance').format(i+1) : _('Remove default instance', 'Dnsmasq instance'); + } + else { + hline.innerText = _('Instance "%q"', 'Dnsmasq instance').format(section['.name']); + btn.innerText = _('Remove instance "%q"', 'Dnsmasq instance').format(section['.name']); + } + }); + } + + nodes.querySelector('#cbi-dhcp-dnsmasq > .cbi-section-create input').placeholder = _('New instance name…', 'Dnsmasq instance'); + + return nodes; + }); + }; + + + s.tab('general', _('General')); + s.tab('cache', _('Cache')); + s.tab('devices', _('Devices & Ports')); + s.tab('dnsrecords', _('DNS Records')); + s.tab('dnssecopt', _('DNSSEC')); + s.tab('filteropts', _('Filter')); + s.tab('forward', _('Forwards')); + s.tab('limits', _('Limits')); + s.tab('logging', _('Log')); + s.tab('files', _('Resolv & Hosts Files')); s.tab('leases', _('Static Leases')); + s.tab('ipsets', _('IP Sets')); + s.tab('relay', _('Relay')); + s.tab('pxe_tftp', _('PXE/TFTP')); - s.taboption('general', form.Flag, 'domainneeded', + o = s.taboption('cache', form.MultiValue, 'cache_rr', + _('Cache arbitrary RR'), _('By default, dnsmasq caches A, AAAA, CNAME and SRV DNS record types.') + '
    ' + + _('This option adds additional record types to the cache.')); + o.optional = true; + o.create = true; + o.multiple = true; + o.display_size = 5; + recordtypes.forEach(r => { + o.value(r); + }); + + s.taboption('filteropts', form.Flag, 'domainneeded', _('Domain required'), - _('Don\'t forward DNS-Requests without DNS-Name')); - + _('Never forward DNS queries which lack dots or domain parts.') + '
    ' + + customi18n(_('Names not in {etc_hosts} are answered {not_found}.') ) + ); s.taboption('general', form.Flag, 'authoritative', _('Authoritative'), - _('This is the only DHCP in the local network')); + _('This is the only DHCP server in the local network.')); - - s.taboption('files', form.Flag, 'readethers', - _('Use /etc/ethers'), - _('Read /etc/ethers to configure the DHCP-Server')); - - s.taboption('files', form.Value, 'leasefile', - _('Leasefile'), - _('file where given DHCP-leases will be stored')); - - s.taboption('files', form.Flag, 'noresolv', - _('Ignore resolve file')).optional = true; - - o = s.taboption('files', form.Value, 'resolvfile', - _('Resolve file'), - _('local DNS file')); - - o.depends('noresolv', '0'); - o.placeholder = '/tmp/resolv.conf.d/resolv.conf.auto'; - o.optional = true; - - - s.taboption('files', form.Flag, 'nohosts', - _('Ignore /etc/hosts')).optional = true; - - s.taboption('files', form.DynamicList, 'addnhosts', - _('Additional Hosts files')).optional = true; - - o = s.taboption('advanced', form.Flag, 'quietdhcp', - _('Suppress logging'), - _('Suppress logging of the routine operation of these protocols')); - o.optional = true; - - o = s.taboption('advanced', form.Flag, 'sequential_ip', - _('Allocate IP sequentially'), - _('Allocate IP addresses sequentially, starting from the lowest available address')); - o.optional = true; - - o = s.taboption('advanced', form.Flag, 'boguspriv', - _('Filter private'), - _('Do not forward reverse lookups for local networks')); - o.default = o.enabled; - - s.taboption('advanced', form.Flag, 'filterwin2k', - _('Filter useless'), - _('Do not forward requests that cannot be answered by public name servers')); - - - s.taboption('advanced', form.Flag, 'localise_queries', - _('Localise queries'), - _('Localise hostname depending on the requesting subnet if multiple IPs are available')); - - if (L.hasSystemFeature('dnsmasq', 'dnssec')) { - o = s.taboption('advanced', form.Flag, 'dnssec', - _('DNSSEC')); - o.optional = true; - - o = s.taboption('advanced', form.Flag, 'dnsseccheckunsigned', - _('DNSSEC check unsigned'), - _('Requires upstream supports DNSSEC; verify unsigned domain responses really come from unsigned domains')); - o.default = o.enabled; - o.optional = true; - } - - s.taboption('general', form.Value, 'local', - _('Local server'), - _('Local domain specification. Names matching this domain are never forwarded and are resolved from DHCP or hosts files only')); + o = s.taboption('general', form.Value, 'local', + _('Resolve these locally'), + _('Never forward these matching domains or subdomains; resolve from DHCP or hosts files only.')); + o.placeholder = '/internal.example.com/private.example.com/example.org'; s.taboption('general', form.Value, 'domain', _('Local domain'), - _('Local domain suffix appended to DHCP names and hosts file entries')); + _('Local domain suffix appended to DHCP names and hosts file entries.')); - s.taboption('advanced', form.Flag, 'expandhosts', + s.taboption('general', form.Flag, 'expandhosts', _('Expand hosts'), - _('Add local domain suffix to names served from hosts files')); - - s.taboption('advanced', form.Flag, 'nonegcache', - _('No negative cache'), - _('Do not cache negative replies, e.g. for not existing domains')); - - s.taboption('advanced', form.Value, 'serversfile', - _('Additional servers file'), - _('This file may contain lines like \'server=/domain/1.2.3.4\' or \'server=1.2.3.4\' for domain-specific or full upstream DNS servers.')); - - s.taboption('advanced', form.Flag, 'strictorder', - _('Strict order'), - _('DNS servers will be queried in the order of the resolvfile')).optional = true; - - s.taboption('advanced', form.Flag, 'allservers', - _('All Servers'), - _('Query all available upstream DNS servers')).optional = true; - - o = s.taboption('advanced', form.DynamicList, 'bogusnxdomain', _('Bogus NX Domain Override'), - _('List of hosts that supply bogus NX domain results')); - - o.optional = true; - o.placeholder = '67.215.65.132'; - - - s.taboption('general', form.Flag, 'logqueries', - _('Log queries'), - _('Write received DNS requests to syslog')).optional = true; - - o = s.taboption('general', form.DynamicList, 'server', _('DNS forwardings'), - _('List of DNS servers to forward requests to')); - - o.optional = true; + _('Add local domain suffix to names served from hosts files.')); + + o = s.taboption('general', form.DynamicList, 'server', + _('DNS forwardings'), + _('List of upstream resolvers to forward queries to.')); o.placeholder = '/example.org/10.1.2.3'; - // o.validate = validateServerSpec; - - o = s.taboption('general', form.DynamicList, 'address', _('Addresses'), - _('List of domains to force to an IP address.')); + o = s.taboption('logging', form.Flag, 'logqueries', + _('Log queries'), + _('Write received DNS queries to syslog.') + ' ' + _('Dump cache on SIGUSR1, include requesting IP.')); o.optional = true; - o.placeholder = '/router.local/192.168.0.1'; - o = s.taboption('general', form.Flag, 'rebind_protection', + o = s.taboption('logging', form.Flag, 'logdhcp', + _('Extra DHCP logging'), + _('Log all options sent to DHCP clients and the tags used to determine them.')); + o.optional = true; + + o = s.taboption('logging', form.Value, 'logfacility', + _('Log facility'), + _('Set log class/facility for syslog entries.')); + o.optional = true; + o.value('KERN'); + o.value('USER'); + o.value('MAIL'); + o.value('DAEMON'); + o.value('AUTH'); + o.value('LPR'); + o.value('NEWS'); + o.value('UUCP'); + o.value('CRON'); + o.value('LOCAL0'); + o.value('LOCAL1'); + o.value('LOCAL2'); + o.value('LOCAL3'); + o.value('LOCAL4'); + o.value('LOCAL5'); + o.value('LOCAL6'); + o.value('LOCAL7'); + o.value('-', _('stderr')); + + o = s.taboption('forward', form.DynamicList, 'server', + _('DNS Forwards'), + _('Forward specific domain queries to specific upstream servers.')); + o.optional = true; + o.placeholder = '/*.example.org/10.1.2.3'; + o.validate = validateServerSpec; + + o = s.taboption('general', form.DynamicList, 'address', + _('Addresses'), + _('Resolve specified FQDNs to an IP.') + '
    ' + + customi18n(_('Syntax: {code_syntax}.'), + {code_syntax: '/fqdn[/fqdn…]/[ipaddr]'}) + '
    ' + + customi18n(_('{example_nx} returns {nxdomain}.', + 'hint: /example.com/ returns NXDOMAIN.'), + {example_nx: '/example.com/', nxdomain: 'NXDOMAIN'}) + '
    ' + + customi18n(_('{any_domain} matches any domain (and returns {nxdomain}).', + 'hint: /#/ matches any domain (and returns NXDOMAIN).'), + {any_domain:'/#/', nxdomain: 'NXDOMAIN'}) + '
    ' + + customi18n( + _('{example_null} returns {null_addr} addresses ({null_ipv4}, {null_ipv6}) for {example_com} and its subdomains.', + 'hint: /example.com/# returns NULL addresses (0.0.0.0, ::) for example.com and its subdomains.'), + { example_null: '/example.com/#', + null_addr: 'NULL', + null_ipv4: '0.0.0.0', + null_ipv6: '::', + example_com: 'example.com', + } + ) + ); + o.optional = true; + o.placeholder = '/router.local/router.lan/192.168.0.1'; + + o = s.taboption('general', form.DynamicList, 'ipset', + _('IP sets'), + _('List of IP sets to populate with the IPs of DNS lookup results of the FQDNs also specified here.')); + o.filter = function(section_id, name) { + return (section_id.startsWith('omr_dscp') == false); + }; + o.optional = true; + o.placeholder = '/example.org/ipset,ipset6'; + + o = s.taboption('filteropts', form.Flag, 'rebind_protection', _('Rebind protection'), - _('Discard upstream RFC1918 responses')); - + customi18n(_('Discard upstream responses containing {rfc_1918_link} addresses.') ) + '
    ' + + customi18n(_('Discard also upstream responses containing {rfc_4193_link}, Link-Local and private IPv4-Mapped {rfc_4291_link} IPv6 Addresses.') ) + ); o.rmempty = false; - - o = s.taboption('general', form.Flag, 'rebind_localhost', + o = s.taboption('filteropts', form.Flag, 'rebind_localhost', _('Allow localhost'), - _('Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services')); - + customi18n( + _('Exempt {loopback_slash_8_v4} and {localhost_v6} from rebinding checks, e.g. for RBL services.') + ) + ); o.depends('rebind_protection', '1'); - - o = s.taboption('general', form.DynamicList, 'rebind_domain', + o = s.taboption('filteropts', form.DynamicList, 'rebind_domain', _('Domain whitelist'), - _('List of domains to allow RFC1918 responses for')); - o.optional = true; - + customi18n(_('List of domains to allow {rfc_1918_link} responses for.') ) + ); o.depends('rebind_protection', '1'); + o.optional = true; o.placeholder = 'ihost.netflix.com'; o.validate = validateAddressList; - - o = s.taboption('advanced', form.Value, 'port', - _('DNS server port'), - _('Listening port for inbound DNS queries')); - - o.optional = true; - o.datatype = 'port'; - o.placeholder = 53; - - - o = s.taboption('advanced', form.Value, 'queryport', - _('DNS query port'), - _('Fixed source port for outbound DNS queries')); - - o.optional = true; - o.datatype = 'port'; - o.placeholder = _('any'); - - - o = s.taboption('advanced', form.Value, 'dhcpleasemax', - _('Max. DHCP leases'), - _('Maximum allowed number of active DHCP leases')); - - o.optional = true; - o.datatype = 'uinteger'; - o.placeholder = _('unlimited'); - - - o = s.taboption('advanced', form.Value, 'ednspacket_max', - _('Max. EDNS0 packet size'), - _('Maximum allowed size of EDNS.0 UDP packets')); - - o.optional = true; - o.datatype = 'uinteger'; - o.placeholder = 1280; - - - o = s.taboption('advanced', form.Value, 'dnsforwardmax', - _('Max. concurrent queries'), - _('Maximum allowed number of concurrent DNS queries')); - - o.optional = true; - o.datatype = 'uinteger'; - o.placeholder = 150; - - o = s.taboption('advanced', form.Value, 'cachesize', - _('Size of DNS query cache'), - _('Number of cached DNS entries (max is 10000, 0 is no caching)')); - o.optional = true; - o.datatype = 'range(0,10000)'; - o.placeholder = 150; - - s.taboption('tftp', form.Flag, 'enable_tftp', - _('Enable TFTP server')).optional = true; - - o = s.taboption('tftp', form.Value, 'tftp_root', - _('TFTP server root'), - _('Root directory for files served via TFTP')); - - o.optional = true; - o.depends('enable_tftp', '1'); - o.placeholder = '/'; - - - o = s.taboption('tftp', form.Value, 'dhcp_boot', - _('Network boot image'), - _('Filename of the boot image advertised to clients')); - - o.optional = true; - o.depends('enable_tftp', '1'); - o.placeholder = 'pxelinux.0'; - - o = s.taboption('general', form.Flag, 'localservice', - _('Local Service Only'), - _('Limit DNS service to subnets interfaces on which we are serving DNS.')); + o = s.taboption('filteropts', form.Flag, 'localservice', + _('Local service only'), + _('Accept DNS queries only from hosts whose address is on a local subnet.')); o.optional = false; o.rmempty = false; - o = s.taboption('general', form.Flag, 'nonwildcard', + o = s.taboption('devices', form.Flag, 'nonwildcard', _('Non-wildcard'), - _('Bind dynamically to interfaces rather than wildcard address (recommended as linux default)')); + _('Bind only to configured interface addresses, instead of the wildcard address.')); o.default = o.enabled; o.optional = false; o.rmempty = true; - o = s.taboption('general', form.DynamicList, 'interface', - _('Listen Interfaces'), - _('Limit listening to these interfaces, and loopback.')); - o.optional = true; + o = s.taboption('devices', widgets.NetworkSelect, 'interface', + _('Listen interfaces'), + _('Listen only on the specified interfaces, and loopback if not excluded explicitly.')); + o.multiple = true; + o.nocreate = true; - o = s.taboption('general', form.DynamicList, 'notinterface', + o = s.taboption('devices', widgets.NetworkSelect, 'notinterface', _('Exclude interfaces'), - _('Prevent listening on these interfaces.')); - o.optional = true; + _('Do not listen on the specified interfaces.')); + o.loopback = true; + o.multiple = true; + o.nocreate = true; - o = s.taboption('leases', form.SectionValue, '__leases__', form.GridSection, 'host', null, - _('Static leases are used to assign fixed IP addresses and symbolic hostnames to DHCP clients. They are also required for non-dynamic interface configurations where only hosts with a corresponding lease are served.') + '
    ' + - _('Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed address to use, and the Hostname is assigned as a symbolic name to the requesting host. The optional Lease time can be used to set non-standard host-specific lease time, e.g. 12h, 3d or infinite.')); + o = s.taboption('relay', form.SectionValue, '__relays__', form.TableSection, 'relay', null, + _('Relay DHCP requests elsewhere. OK: v4↔v4, v6↔v6. Not OK: v4↔v6, v6↔v4.') + + '
    ' + _('Note: you may also need a DHCP Proxy (currently unavailable) when specifying a non-standard Relay To port(addr#port).') + + '
    ' + _('You may add multiple unique Relay To on the same Listen addr.')); ss = o.subsection; ss.addremove = true; ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + so = ss.option(form.Value, 'local_addr', _('Relay from')); + so.rmempty = false; + so.datatype = 'ipaddr'; + + for (var family = 4; family <= 6; family += 2) { + for (var i = 0; i < networks.length; i++) { + if (networks[i].getName() != 'loopback') { + var addrs = (family == 6) ? networks[i].getIP6Addrs() : networks[i].getIPAddrs(); + for (var j = 0; j < addrs.length; j++) { + var addr = addrs[j].split('/')[0]; + so.value(addr, E([], [ + addr, ' (', + widgets.NetworkSelect.prototype.renderIfaceBadge(networks[i]), + ')' + ])); + } + } + } + } + + so = ss.option(form.Value, 'server_addr', _('Relay to address')); + so.rmempty = false; + so.optional = false; + so.placeholder = '192.168.10.1#535'; + + so.validate = function(section, value) { + var m = this.section.formvalue(section, 'local_addr'), + n = this.section.formvalue(section, 'server_addr'), + p; + + if (!m || !n) { + return _('Both "Relay from" and "Relay to address" must be specified.'); + } + else { + p = n.split('#'); + if (p.length > 1 && !/^[0-9]+$/.test(p[1])) + return _('Expected port number.'); + else + n = p[0]; + + if ((validation.parseIPv6(m) && validation.parseIPv6(n)) || + validation.parseIPv4(m) && validation.parseIPv4(n)) + return true; + else + return _('Address families of "Relay from" and "Relay to address" must match.') + } + return true; + }; + + + so = ss.option(widgets.NetworkSelect, 'interface', _('Only accept replies via')); + so.optional = true; + so.rmempty = false; + so.placeholder = 'lan'; + + s.taboption('files', form.Flag, 'readethers', + customi18n(_('Use {etc_ethers}') ), + customi18n(_('Read {etc_ethers} to configure the DHCP server.') ) + ); + + s.taboption('files', form.Value, 'leasefile', + _('Lease file'), + _('File to store DHCP lease information.')); + + o = s.taboption('files', form.Flag, 'noresolv', + _('Ignore resolv file')); + o.optional = true; + + o = s.taboption('files', form.Value, 'resolvfile', + _('Resolv file'), + _('File with upstream resolvers.')); + o.depends('noresolv', '0'); + o.placeholder = '/tmp/resolv.conf.d/resolv.conf.auto'; + o.optional = true; + + o = s.taboption('files', form.Flag, 'strictorder', + _('Strict order'), + _('Query upstream resolvers in the order they appear in the resolv file.')); + o.optional = true; + + o = s.taboption('files', form.Flag, 'ignore_hosts_dir', + _('Ignore hosts files directory'), + _('On: use instance specific hosts file only') + '
    ' + + _('Off: use all files in the directory including the instance specific hosts file') + ); + o.optional = true; + + o = s.taboption('files', form.Flag, 'nohosts', + customi18n(_('Ignore {etc_hosts} file') ) + ); + o.optional = true; + + o = s.taboption('files', form.DynamicList, 'addnhosts', + _('Additional hosts files')); + o.optional = true; + o.placeholder = '/etc/dnsmasq.hosts'; + + o = s.taboption('logging', form.Flag, 'quietdhcp', + _('Suppress logging'), + _('Suppress logging of the routine operation for the DHCP protocol.')); + o.optional = true; + o.depends('logdhcp', '0'); + + o = s.taboption('general', form.Flag, 'sequential_ip', + _('Allocate IPs sequentially'), + _('Allocate IP addresses sequentially, starting from the lowest available address.')); + o.optional = true; + + o = s.taboption('filteropts', form.Flag, 'boguspriv', + _('Filter private'), + customi18n( + _('Reject reverse lookups to {rfc_6303_link} IP ranges ({reverse_arpa}) not in {etc_hosts}.') ) + ); + o.default = o.enabled; + + s.taboption('filteropts', form.Flag, 'filterwin2k', + _('Filter SRV/SOA service discovery'), + _('Filters SRV/SOA service discovery, to avoid triggering dial-on-demand links.') + '
    ' + + _('May prevent VoIP or other services from working.')); + + o = s.taboption('filteropts', form.Flag, 'filter_aaaa', + _('Filter IPv6 AAAA records'), + _('Remove IPv6 addresses from the results and only return IPv4 addresses.') + '
    ' + + _('Can be useful if ISP has IPv6 nameservers but does not provide IPv6 routing.')); + o.optional = true; + + o = s.taboption('filteropts', form.Flag, 'filter_a', + _('Filter IPv4 A records'), + _('Remove IPv4 addresses from the results and only return IPv6 addresses.')); + o.optional = true; + + o = s.taboption('filteropts', form.MultiValue, 'filter_rr', + _('Filter arbitrary RR'), _('Removes records of the specified type(s) from answers.')); + o.optional = true; + o.create = true; + o.multiple = true; + o.display_size = 5; + recordtypes.forEach(r => { + o.value(r); + }); + + s.taboption('filteropts', form.Flag, 'localise_queries', + _('Localise queries'), + customi18n(_('Limit response records (from {etc_hosts}) to those that fall within the subnet of the querying interface.') ) + '
    ' + + _('This prevents unreachable IPs in subnets not accessible to you.') + '
    ' + + _('Note: IPv4 only.')); + + if (L.hasSystemFeature('dnsmasq', 'dnssec')) { + o = s.taboption('dnssecopt', form.Flag, 'dnssec', + _('DNSSEC'), + _('Validate DNS replies and cache DNSSEC data, requires upstream to support DNSSEC.')); + o.optional = true; + + o = s.taboption('dnssecopt', form.Flag, 'dnsseccheckunsigned', + _('DNSSEC check unsigned'), + _('Verify unsigned domain responses really come from unsigned domains.')); + o.default = o.enabled; + o.optional = true; + } + + s.taboption('filteropts', form.Flag, 'nonegcache', + _('No negative cache'), + _('Do not cache negative replies, e.g. for non-existent domains.')); + + o = s.taboption('forward', form.Value, 'serversfile', + _('Additional servers file'), + customi18n(_('File listing upstream resolvers, optionally domain-specific, e.g. {servers_file_entry01}, {servers_file_entry02}.') ) + ); + o.placeholder = '/etc/dnsmasq.servers'; + + o = s.taboption('forward', form.Value, 'addmac', + _('Add requestor MAC'), + _('Add the MAC address of the requestor to DNS queries which are forwarded upstream.') + ' ' + '
    ' + + _('%s uses the default MAC address format encoding').format('enabled') + ' ' + '
    ' + + _('%s uses an alternative encoding of the MAC as base64').format('base64') + ' ' + '
    ' + + _('%s uses a human-readable encoding of hex-and-colons').format('text')); + o.optional = true; + o.value('', _('off')); + o.value('1', _('enabled (default)')); + o.value('base64'); + o.value('text'); + + s.taboption('forward', form.Flag, 'stripmac', + _('Remove MAC address before forwarding query'), + _('Remove any MAC address information already in downstream queries before forwarding upstream.')); + + o = s.taboption('forward', form.Value, 'addsubnet', + _('Add subnet address to forwards'), + _('Add a subnet address to the DNS queries which are forwarded upstream, leaving this value empty disables the feature.') + ' ' + + _('If an address is specified in the flag, it will be used, otherwise, the address of the requestor will be used.') + ' ' + + _('The amount of the address forwarded depends on the prefix length parameter: 32 (128 for IPv6) forwards the whole address, zero forwards none of it but still marks the request so that no upstream nameserver will add client address information either.') + ' ' + '
    ' + + _('The default (%s) is zero for both IPv4 and IPv6.').format('0,0') + ' ' + '
    ' + + _('%s adds the /24 and /96 subnets of the requestor for IPv4 and IPv6 requestors, respectively.').format('24,96') + ' ' + '
    ' + + _('%s adds 1.2.3.0/24 for IPv4 requestors and ::/0 for IPv6 requestors.').format('1.2.3.4/24') + ' ' + '
    ' + + _('%s adds 1.2.3.0/24 for both IPv4 and IPv6 requestors.').format('1.2.3.4/24,1.2.3.4/24')); + o.optional = true; + + s.taboption('forward', form.Flag, 'stripsubnet', + _('Remove subnet address before forwarding query'), + _('Remove any subnet address already present in a downstream query before forwarding it upstream.')); + + o = s.taboption('general', form.Flag, 'allservers', + _('All servers'), + _('Query all available upstream resolvers.') + ' ' + _('First answer wins.')); + o.optional = true; + + o = s.taboption('filteropts', form.DynamicList, 'bogusnxdomain', + customi18n(_('IPs to override with {nxdomain}') ), + customi18n(_('Transform replies which contain the specified addresses or subnets into {nxdomain} responses.') ) + ); + o.optional = true; + o.placeholder = '64.94.110.11'; + + o = s.taboption('devices', form.Value, 'port', + _('DNS server port'), + _('Listening port for inbound DNS queries.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = 53; + + o = s.taboption('devices', form.Value, 'queryport', + _('DNS query port'), + _('Fixed source port for outbound DNS queries.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = _('any'); + + o = s.taboption('devices', form.Value, 'minport', + _('Minimum source port #'), + _('Min valid value %s.').format('1024') + ' ' + _('Useful for systems behind firewalls.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = 1024; + o.depends('queryport', ''); + + o = s.taboption('devices', form.Value, 'maxport', + _('Maximum source port #'), + _('Max valid value %s.').format('65535') + ' ' + _('Useful for systems behind firewalls.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = 50000; + o.depends('queryport', ''); + + o = s.taboption('limits', form.Value, 'dhcpleasemax', + _('Max. DHCP leases'), + _('Maximum allowed number of active DHCP leases.')); + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 150; + + o = s.taboption('limits', form.Value, 'ednspacket_max', + _('Max. EDNS0 packet size'), + _('Maximum allowed size of EDNS0 UDP packets.')); + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 1280; + + o = s.taboption('limits', form.Value, 'dnsforwardmax', + _('Max. concurrent queries'), + _('Maximum allowed number of concurrent DNS queries.')); + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 150; + + o = s.taboption('limits', form.Value, 'cachesize', + _('Size of DNS query cache'), + _('Number of cached DNS entries, 10000 is maximum, 0 is no caching.')); + o.optional = true; + o.datatype = 'range(0,10000)'; + o.placeholder = 1000; + + o = s.taboption('limits', form.Value, 'min_cache_ttl', + _('Min cache TTL'), + _('Extend short TTL values to the seconds value given when caching them. Use with caution.') + + _(' (Max 1h == 3600)')); + o.optional = true; + o.placeholder = 60; + + o = s.taboption('limits', form.Value, 'max_cache_ttl', + _('Max cache TTL'), + _('Set a maximum seconds TTL value for entries in the cache.')); + o.optional = true; + o.placeholder = 3600; + + o = s.taboption('pxe_tftp', form.Flag, 'enable_tftp', + _('Enable TFTP server'), + _('Enable the built-in single-instance TFTP server.')); + o.optional = true; + + o = s.taboption('pxe_tftp', form.Value, 'tftp_root', + _('TFTP server root'), + _('Root directory for files served via TFTP. Enable TFTP server and TFTP server root turn on the TFTP server and serve files from TFTP server root.')); + o.depends('enable_tftp', '1'); + o.optional = true; + o.placeholder = '/'; + + o = s.taboption('pxe_tftp', form.Value, 'dhcp_boot', + _('Network boot image'), + _('Filename of the boot image advertised to clients.')); + o.depends('enable_tftp', '1'); + o.optional = true; + o.placeholder = 'pxelinux.0'; + + /* PXE - https://openwrt.org/docs/guide-user/base-system/dhcp#booting_options */ + o = s.taboption('pxe_tftp', form.SectionValue, '__pxe__', form.GridSection, 'boot', null, + _('Special PXE boot options for Dnsmasq.')); + ss = o.subsection; + ss.addremove = true; + ss.anonymous = true; + ss.modaltitle = _('Edit PXE/TFTP/BOOTP Host'); + ss.nodescriptions = true; + + so = ss.option(form.Value, 'filename', + _('Filename'), + _('Host requests this filename from the boot server.')); + so.optional = false; + so.placeholder = 'pxelinux.0'; + + so = ss.option(form.Value, 'servername', + _('Server name'), + _('The hostname of the boot server')); + so.optional = false; + so.placeholder = 'myNAS'; + + so = ss.option(form.Value, 'serveraddress', + _('Server address'), + _('The IP address of the boot server')); + so.optional = false; + so.placeholder = '192.168.1.2'; + + so = ss.option(form.DynamicList, 'dhcp_option', + _('DHCP Options'), + _('Additional options to send to the below match tags.') + '
    ' + + _('%s means "the address of the system running dnsmasq".').format('0.0.0.0')); + so.optional = true; + so.placeholder = 'option:root-path,192.168.1.2:/data/netboot/root'; + + so = ss.option(form.Value, 'networkid', + _('Match this Tag'), + _('Only DHCP Clients with this tag are sent this boot option.')); + so.optional = true; + so.noaliases = true; + + so = ss.option(form.Flag, 'force', + _('Force'), + _('Always send the chosen DHCP options. Sometimes needed, with e.g. PXELinux.')); + so.optional = true; + + so = ss.option(form.Value, 'instance', + _('Instance'), + _('Dnsmasq instance to which this boot section is bound. If unspecified, the section is valid for all dnsmasq instances.')); + so.optional = true; + + Object.values(L.uci.sections('dhcp', 'dnsmasq')).forEach(function(val, index) { + var [name, display_str] = generateDnsmasqInstanceEntry(val); + so.value(name, display_str); + }); + + o = s.taboption('dnsrecords', form.SectionValue, '__dnsrecords__', form.TypedSection, '__dnsrecords__'); + + dnss = o.subsection; + + dnss.anonymous = true; + dnss.cfgsections = function() { return [ '__dnsrecords__' ] }; + + dnss.tab('hosts', _('Hostnames')); + dnss.tab('srvhosts', _('SRV')); + dnss.tab('mxhosts', _('MX')); + dnss.tab('cnamehosts', _('CNAME')); + dnss.tab('dnsrr', _('DNS-RR')); + + o = dnss.taboption('srvhosts', form.SectionValue, '__srvhosts__', form.TableSection, 'srvhost', null, + _('Bind service records to a domain name: specify the location of services. See RFC2782.').format('https://datatracker.ietf.org/doc/html/rfc2782') + + '
    ' + _('_service: _sip, _ldap, _imap, _stun, _xmpp-client, … . (Note: while _http is possible, no browsers support SRV records.)') + + '
    ' + _('_proto: _tcp, _udp, _sctp, _quic, … .') + + '
    ' + _('You may add multiple records for the same Target.') + + '
    ' + _('Larger weights (of the same prio) are given a proportionately higher probability of being selected.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + + so = ss.option(form.Value, 'srv', _('SRV'), _('Syntax:') + ' ' + '_service._proto.example.com.'); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = '_sip._tcp.example.com.'; + + so = ss.option(form.Value, 'target', _('Target'), _('CNAME or fqdn')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'sip.example.com.'; + + so = ss.option(form.Value, 'port', _('Port')); + so.rmempty = false; + so.datatype = 'port'; + so.placeholder = '5060'; + + so = ss.option(form.Value, 'class', _('Priority'), _('Ordinal: lower comes first.')); + so.rmempty = true; + so.datatype = 'range(0,65535)'; + so.placeholder = '10'; + + so = ss.option(form.Value, 'weight', _('Weight')); + so.rmempty = true; + so.datatype = 'range(0,65535)'; + so.placeholder = '50'; + + o = dnss.taboption('mxhosts', form.SectionValue, '__mxhosts__', form.TableSection, 'mxhost', null, + _('Bind service records to a domain name: specify the location of services.') + + '
    ' + _('You may add multiple records for the same domain.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + so = ss.option(form.Value, 'domain', _('Domain')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'example.com.'; + + so = ss.option(form.Value, 'relay', _('Relay')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'relay.example.com.'; + + so = ss.option(form.Value, 'pref', _('Priority'), _('Ordinal: lower comes first.')); + so.rmempty = true; + so.datatype = 'range(0,65535)'; + so.placeholder = '0'; + + o = dnss.taboption('cnamehosts', form.SectionValue, '__cname__', form.TableSection, 'cname', null, + _('Set an alias for a hostname.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + so = ss.option(form.Value, 'cname', _('Domain')); + so.rmempty = false; + so.validate = validateHostname; + so.placeholder = 'www.example.com.'; + + so = ss.option(form.Value, 'target', _('Target')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'example.com.'; + + o = dnss.taboption('hosts', form.SectionValue, '__hosts__', form.GridSection, 'domain', null, + _('Hostnames are used to bind a domain name to an IP address. This setting is redundant for hostnames already configured with static leases, but it can be useful to rebind an FQDN.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; so = ss.option(form.Value, 'name', _('Hostname')); + so.rmempty = false; + so.datatype = 'hostname'; + + so = ss.option(form.Value, 'ip', _('IP address')); + so.rmempty = false; + so.datatype = 'ipaddr("nomask")'; + + var ipaddrs = {}; + + Object.keys(hosts).forEach(function(mac) { + var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4); + + for (var i = 0; i < addrs.length; i++) + ipaddrs[addrs[i]] = hosts[mac].name || mac; + }); + + L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { + so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4])); + }); + + o = dnss.taboption('dnsrr', form.SectionValue, '__dnsrr__', form.TableSection, 'dnsrr', null, + _('Set an arbitrary resource record (RR) type.') + '
    ' + + _('Hexdata is automatically en/decoded on save and load')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + function hexdecodeload(section_id) { + let value = uci.get('dhcp', section_id, this.option) || ''; + // Remove any spaces or colons from the hex string - they're allowed + value = value.replace(/[\s:]/g, ''); + // Hex-decode the string before displaying + let decodedString = ''; + for (let i = 0; i < value.length; i += 2) { + decodedString += String.fromCharCode(parseInt(value.substr(i, 2), 16)); + } + return decodedString; + } + + function hexencodesave(section, value) { + if (!value || value.length === 0) { + uci.unset('dhcp', section, 'hexdata'); + return; + } + // Hex-encode the string before saving + const encodedArr = value.split('').map(c => c.charCodeAt(0).toString(16).padStart(2, '0')).join(''); + uci.set('dhcp', section, this.option, encodedArr); + } + + so = ss.option(form.Value, 'dnsrr', _('Resource Record Name')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'svcb.example.com.'; + + so = ss.option(form.Value, 'rrnumber', _('Resource Record Number')); + so.rmempty = false; + so.datatype = 'uinteger'; + so.placeholder = '64'; + + so = ss.option(form.Value, 'hexdata', _('Raw Data')); + so.rmempty = true; + so.datatype = 'string'; + so.placeholder = 'free-form string'; + so.load = hexdecodeload; + so.write = hexencodesave; + + so = ss.option(form.DummyValue, '_hexdata', _('Hex Data')); + so.width = '10%'; + so.rawhtml = true; + so.load = function(section_id) { + let hexdata = uci.get('dhcp', section_id, 'hexdata') || ''; + hexdata = hexdata.replace(/[:]/g, ''); + if (hexdata) { + return hexdata.replace(/(.{20})/g, '$1
    '); // Inserts
    after every 2 characters (hex pair) + } else { + return ''; + } + } + + o = s.taboption('ipsets', form.SectionValue, '__ipsets__', form.GridSection, 'ipset', null, + _('List of IP sets to populate with the IPs of DNS lookup results of the FQDNs also specified here.') + '
    ' + + _('The netfilter components below are only regarded when running fw4.')); + + ss = o.subsection; + ss.filter = function(section_id, name) { + return (section_id.startsWith('omr_') == false); + }; + + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + ss.modaltitle = _('Edit IP set'); + + so = ss.option(form.DynamicList, 'name', _('Name of the set')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + so.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + so.rmempty = false; + so.editable = false; + so.datatype = 'string'; + + so = ss.option(form.DynamicList, 'domain', _('FQDN')); + so.rmempty = false; + so.editable = false; + so.datatype = 'hostname'; + + so = ss.option(form.Value, 'table', _('Netfilter table name'), _('Defaults to fw4.')); + so.editable = false; + so.placeholder = 'fw4'; + so.rmempty = true; + + so = ss.option(form.ListValue, 'table_family', _('Table IP family'), _('Defaults to IPv4+6.') + ' ' + _('Can be hinted by adding 4 or 6 to the name.') + '
    ' + + _('Adding an IPv6 to an IPv4 set and vice-versa silently fails.')); + so.editable = false; + so.rmempty = true; + so.value('inet', _('IPv4+6')); + so.value('ip', _('IPv4')); + so.value('ip6', _('IPv6')); + + o = s.taboption('leases', form.SectionValue, '__leases__', form.GridSection, 'host', null, + _('Static leases are used to assign fixed IP addresses and symbolic hostnames to DHCP clients. They are also required for non-dynamic interface configurations where only hosts with a corresponding lease are served.') + '

    ' + + _('Use the Add Button to add a new lease entry. The MAC address identifies the host, the IPv4 address specifies the fixed address to use, and the Hostname is assigned as a symbolic name to the requesting host. The optional Lease time can be used to set non-standard host-specific lease time, e.g. 12h, 3d or infinite.') + '

    ' + + _('The tag construct filters which host directives are used; more than one tag can be provided, in this case the request must match all of them. Tagged directives are used in preference to untagged ones. Note that one of mac, duid or hostname still needs to be specified (can be a wildcard).')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.nodescriptions = true; + ss.max_cols = 8; + ss.modaltitle = _('Edit static lease'); + + so = ss.option(form.Value, 'name', + _('Hostname'), + _('Optional hostname to assign')); so.validate = validateHostname; so.rmempty = true; so.write = function(section, value) { @@ -426,82 +1198,116 @@ return view.extend({ uci.unset('dhcp', section, 'dns'); }; - so = ss.option(form.Value, 'mac', _('MAC-Address')); - so.datatype = 'list(unique(macaddr))'; + //this can be a .DynamicList or a .Value with a widget and dnsmasq handles multimac OK. + so = ss.option(form.DynamicList, 'mac', + _('MAC address(es)'), + _('The hardware address(es) of this entry/host.') + '

    ' + + _('In DHCPv4, it is possible to include more than one mac address. This allows an IP address to be associated with multiple macaddrs, and dnsmasq abandons a DHCP lease to one of the macaddrs when another asks for a lease. It only works reliably if only one of the macaddrs is active at any time.')); + //As a special case, in DHCPv4, it is possible to include more than one hardware address. eg: --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2 This allows an IP address to be associated with multiple hardware addresses, and gives dnsmasq permission to abandon a DHCP lease to one of the hardware addresses when another one asks for a lease so.rmempty = true; so.cfgvalue = function(section) { - var macs = L.toArray(uci.get('dhcp', section, 'mac')), - result = []; - - for (var i = 0, mac; (mac = macs[i]) != null; i++) - if (/^([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2}):([0-9a-fA-F]{1,2})$/.test(mac)) - result.push('%02X:%02X:%02X:%02X:%02X:%02X'.format( - parseInt(RegExp.$1, 16), parseInt(RegExp.$2, 16), - parseInt(RegExp.$3, 16), parseInt(RegExp.$4, 16), - parseInt(RegExp.$5, 16), parseInt(RegExp.$6, 16))); - - return result.length ? result.join(' ') : null; - }; - so.renderWidget = function(section_id, option_index, cfgvalue) { - var node = form.Value.prototype.renderWidget.apply(this, [section_id, option_index, cfgvalue]), - ipopt = this.section.children.filter(function(o) { return o.option == 'ip' })[0]; - - node.addEventListener('cbi-dropdown-change', L.bind(function(ipopt, section_id, ev) { - var mac = ev.detail.value.value; - if (mac == null || mac == '' || !hosts[mac] || !hosts[mac].ipv4) - return; - - var ip = ipopt.formvalue(section_id); - if (ip != null && ip != '') - return; - - var node = ipopt.map.findElement('id', ipopt.cbid(section_id)); - if (node) - dom.callClassMethod(node, 'setValue', hosts[mac].ipv4); - }, this, ipopt, section_id)); - - return node; + var macs = uci.get('dhcp', section, 'mac'); + if(!Array.isArray(macs)){ + return expandAndFormatMAC(L.toArray(macs)); + } else { + return expandAndFormatMAC(macs); + } }; + //removed jows renderwidget function which hindered multi-mac entry + so.validate = validateMACAddr.bind(so, pools); Object.keys(hosts).forEach(function(mac) { - var hint = hosts[mac].name || hosts[mac].ipv4; + var hint = hosts[mac].name || L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4)[0]; so.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); }); - so = ss.option(form.Value, 'ip', _('IPv4-Address')); + so = ss.option(form.Value, 'ip', _('IPv4 address'), _('The IP address to be used for this host, or ignore to ignore any DHCP request from this host.')); + so.value('ignore', _('Ignore')); so.datatype = 'or(ip4addr,"ignore")'; so.validate = function(section, value) { - var mac = this.map.lookupOption('mac', section), - name = this.map.lookupOption('name', section), - m = mac ? mac[0].formvalue(section) : null, - n = name ? name[0].formvalue(section) : null; + var m = this.section.formvalue(section, 'mac'), + n = this.section.formvalue(section, 'name'); - if ((m == null || m == '') && (n == null || n == '')) - return _('One of hostname or mac address must be specified!'); + if ((m && !m.length > 0) && !n) + return _('One of hostname or MAC address must be specified!'); - return true; - }; - Object.keys(hosts).forEach(function(mac) { - if (hosts[mac].ipv4) { - var hint = hosts[mac].name; - so.value(hosts[mac].ipv4, hint ? '%s (%s)'.format(hosts[mac].ipv4, hint) : hosts[mac].ipv4); + if (!value || value == 'ignore') + return true; + + var leases = uci.sections('dhcp', 'host'); + + for (var i = 0; i < leases.length; i++) + if (leases[i]['.name'] != section && leases[i].ip == value) + return _('The IP address %h is already used by another static lease').format(value); + + for (var i = 0; i < pools.length; i++) { + var net_mask = calculateNetwork(value, pools[i].netmask); + + if (net_mask && net_mask[0] == pools[i].network) + return true; } + + return _('The IP address is outside of any DHCP pool address range'); + }; + + L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { + so.value(ipv4, ipaddrs[ipv4] ? '%s (%s)'.format(ipv4, ipaddrs[ipv4]) : ipv4); }); - so = ss.option(form.Value, 'gw', _('Gateway')); - so.datatype = 'or(ip4addr,"ignore")'; + so = ss.option(form.Value, 'leasetime', + _('Lease time'), + _('Host-specific lease time, e.g. 5m, 3h, 7d.')); so.rmempty = true; + so.value('5m', _('5m (5 minutes)')); + so.value('3h', _('3h (3 hours)')); + so.value('12h', _('12h (12 hours - default)')); + so.value('7d', _('7d (7 days)')); + so.value('infinite', _('infinite (lease does not expire)')); - so = ss.option(form.Value, 'leasetime', _('Lease time'), _('The lease time is minutes (mini 2m), hours (eg 1h) or "infinite"')); - so.placeholder = '12h'; - so.rmempty = true; - - so = ss.option(form.Value, 'duid', _('DUID')); + so = ss.option(form.Value, 'duid', + _('DUID'), + _('The DHCPv6-DUID (DHCP unique identifier) of this host.')); so.datatype = 'and(rangelength(20,36),hexstring)'; Object.keys(duids).forEach(function(duid) { so.value(duid, '%s (%s)'.format(duid, duids[duid].hostname || duids[duid].macaddr || duids[duid].ip6addr || '?')); }); - so = ss.option(form.Value, 'hostid', _('IPv6-Suffix (hex)')); + so = ss.option(form.Value, 'hostid', + _('IPv6-Suffix (hex)'), + _('The IPv6 interface identifier (address suffix) as hexadecimal number (max. 16 chars).')); + so.datatype = 'and(rangelength(0,16),hexstring)'; + + so = ss.option(form.DynamicList, 'tag', + _('Tag'), + _('Assign new, freeform tags to this entry.')); + + so = ss.option(form.DynamicList, 'match_tag', + _('Match Tag'), + _('When a host matches an entry then the special tag %s is set. Use %s to match all known hosts.').format('known', 'known') + '

    ' + + _('Ignore requests from unknown machines using %s.').format('!known') + '

    ' + + _('If a host matches an entry which cannot be used because it specifies an address on a different subnet, the tag %s is set.').format('known-othernet')); + so.value('known', _('known')); + so.value('!known', _('!known (not known)')); + so.value('known-othernet', _('known-othernet (on different subnet)')); + so.optional = true; + + so = ss.option(form.Value, 'instance', + _('Instance'), + _('Dnsmasq instance to which this DHCP host section is bound. If unspecified, the section is valid for all dnsmasq instances.')); + so.optional = true; + + Object.values(L.uci.sections('dhcp', 'dnsmasq')).forEach(function(val, index) { + var [name, display_str] = generateDnsmasqInstanceEntry(val); + so.value(name, display_str); + }); + + + so = ss.option(form.Flag, 'broadcast', + _('Broadcast'), + _('Force broadcast DHCP response.')); + + so = ss.option(form.Flag, 'dns', + _('Forward/reverse DNS'), + _('Add static forward and reverse DNS entries for this host.')); o = s.taboption('leases', CBILeaseStatus, '__status__'); @@ -525,8 +1331,17 @@ return view.extend({ else exp = '%t'.format(lease.expires); + var hint = lease.macaddr ? hosts[lease.macaddr] : null, + name = hint ? hint.name : null, + host = null; + + if (name && lease.hostname && lease.hostname != name) + host = '%s (%s)'.format(lease.hostname, name); + else if (lease.hostname) + host = lease.hostname; + return [ - lease.hostname || '?', + host || '-', lease.ipaddr, lease.macaddr, exp @@ -547,7 +1362,7 @@ return view.extend({ exp = '%t'.format(lease.expires); var hint = lease.macaddr ? hosts[lease.macaddr] : null, - name = hint ? (hint.name || hint.ipv4 || hint.ipv6) : null, + name = hint ? (hint.name || L.toArray(hint.ipaddrs || hint.ipv4)[0] || L.toArray(hint.ip6addrs || hint.ipv6)[0]) : null, host = null; if (name && lease.hostname && lease.hostname != name && lease.ip6addr != name) @@ -559,7 +1374,7 @@ return view.extend({ return [ host || '-', - lease.ip6addrs ? lease.ip6addrs.join(' ') : lease.ip6addr, + lease.ip6addrs ? lease.ip6addrs.join('
    ') : lease.ip6addr, lease.duid, exp ]; diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js b/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js index 5d6bd4765..1bfa95501 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js @@ -4,6 +4,7 @@ 'require fs'; 'require ui'; 'require uci'; +'require network'; return view.extend({ handleCommand: function(exec, args) { @@ -13,8 +14,7 @@ return view.extend({ buttons[i].setAttribute('disabled', 'true'); return fs.exec(exec, args).then(function(res) { - var out = document.querySelector('.command-output'); - out.style.display = ''; + var out = document.querySelector('textarea'); dom.content(out, [ res.stdout || '', res.stderr || '' ]); }).catch(function(err) { @@ -36,7 +36,7 @@ return view.extend({ handleTraceroute: function(ev, cmd) { var exec = cmd || 'traceroute', addr = ev.currentTarget.parentNode.previousSibling.value, - args = (exec == 'traceroute') ? [ '-q', '1', '-w', '1', '-n', addr ] : [ '-q', '1', '-w', '2', '-n', addr ]; + args = (exec == 'traceroute') ? [ '-4', '-q', '1', '-w', '1', '-n', '-m', String(L.env.rpctimeout || 20), addr ] : [ '-q', '1', '-w', '2', '-n', addr ]; return this.handleCommand(exec, args); }, @@ -47,12 +47,20 @@ return view.extend({ return this.handleCommand('nslookup', [ addr ]); }, + handleArpScan: function(ev, cmd) { + var addr = ev.currentTarget.parentNode.previousSibling.value; + + return this.handleCommand('arp-scan', [ '-l', '-I', addr ]); + }, + load: function() { return Promise.all([ L.resolveDefault(fs.stat('/bin/ping6'), {}), L.resolveDefault(fs.stat('/usr/bin/ping6'), {}), L.resolveDefault(fs.stat('/bin/traceroute6'), {}), L.resolveDefault(fs.stat('/usr/bin/traceroute6'), {}), + L.resolveDefault(fs.stat('/usr/bin/arp-scan'), {}), + network.getDevices(), uci.load('luci') ]); }, @@ -60,15 +68,15 @@ return view.extend({ render: function(res) { var has_ping6 = res[0].path || res[1].path, has_traceroute6 = res[2].path || res[3].path, + has_arpscan = res[4].path, + devices = res[5], dns_host = uci.get('luci', 'diag', 'dns') || 'openwrt.org', ping_host = uci.get('luci', 'diag', 'ping') || 'openwrt.org', route_host = uci.get('luci', 'diag', 'route') || 'openwrt.org'; - return E([], [ - E('h2', {}, [ _('Network Utilities') ]), - E('table', { 'class': 'table' }, [ + var table = E('table', { 'class': 'table' }, [ E('tr', { 'class': 'tr' }, [ - E('td', { 'class': 'td left' }, [ + E('td', { 'class': 'td left', 'style': 'overflow:initial' }, [ E('input', { 'style': 'margin:5px 0', 'type': 'text', @@ -91,7 +99,7 @@ return view.extend({ ]) ]), - E('td', { 'class': 'td left' }, [ + E('td', { 'class': 'td left', 'style': 'overflow:initial' }, [ E('input', { 'style': 'margin:5px 0', 'type': 'text', @@ -126,11 +134,45 @@ return view.extend({ 'click': ui.createHandlerFn(this, 'handleNslookup') }, [ _('Nslookup') ]) ]) - ]) + ]), + + has_arpscan ? E('td', { 'class': 'td left' }, [ + E('select', { + 'style': 'margin:5px 0' + }, devices.map(function(device) { + if (!device.isUp()) + return E([]); + + return E('option', { 'value': device.getName() }, [ device.getI18n() ]); + })), + E('span', { 'class': 'diag-action' }, [ + E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handleArpScan') + }, [ _('Arp-scan') ]) + ]) + ]) : E([]), ]) - ]), - E('pre', { 'class': 'command-output', 'style': 'display:none' }) + ]); + + var view = E('div', { 'class': 'cbi-map'}, [ + E('h2', {}, [ _('Diagnostics') ]), + E('div', { 'class': 'cbi-map-descr'}, _('Execution of various network commands to check the connection and name resolution to other systems.')), + table, + E('div', {'class': 'cbi-section'}, [ + E('div', { 'id' : 'command-output'}, + E('textarea', { + 'id': 'widget.command-output', + 'style': 'width: 100%; font-family:monospace; white-space:pre', + 'readonly': true, + 'wrap': 'off', + 'rows': '20' + }) + ) + ]) ]); + + return view; }, handleSaveApply: null, diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js b/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js deleted file mode 100644 index cd0dacbf6..000000000 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; -'require view'; -'require rpc'; -'require form'; - -return view.extend({ - callHostHints: rpc.declare({ - object: 'luci-rpc', - method: 'getHostHints', - expect: { '': {} } - }), - - load: function() { - return this.callHostHints(); - }, - - render: function(hosts) { - var m, s, o; - - m = new form.Map('dhcp', _('Hostnames')); - - s = m.section(form.GridSection, 'domain', _('Host entries')); - s.addremove = true; - s.anonymous = true; - s.sortable = true; - - o = s.option(form.Value, 'name', _('Hostname')); - o.datatype = 'hostname'; - o.rmempty = true; - - o = s.option(form.Value, 'ip', _('IP address')); - o.datatype = 'ipaddr'; - o.rmempty = true; - L.sortedKeys(hosts, 'ipv4', 'addr').forEach(function(mac) { - o.value(hosts[mac].ipv4, '%s (%s)'.format( - hosts[mac].ipv4, - hosts[mac].name || mac - )); - }); - - return m.render(); - } -}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js b/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js index 5cd091920..1f63de5c4 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js @@ -9,6 +9,7 @@ 'require network'; 'require firewall'; 'require tools.widgets as widgets'; +'require tools.network as nettools'; var isReadonlyView = !L.hasViewPermission() || null; @@ -64,47 +65,32 @@ function render_status(node, ifc, with_device) { null, E('em', _('Interface is marked for deletion')) ]); - var i18n = ifc.getI18n(); - if (i18n) - desc = desc ? '%s (%s)'.format(desc, i18n) : i18n; + desc = desc ? '%s (%s)'.format(desc, ifc.getI18n()) : ifc.getI18n(); - var changecount = with_device ? 0 : count_changes(ifc.getName()), - ipaddrs = changecount ? [] : ifc.getIPAddrs(), - ip6addrs = changecount ? [] : ifc.getIP6Addrs(), - errors = ifc.getErrors(), - maindev = ifc.getL3Device() || ifc.getDevice(), - macaddr = maindev ? maindev.getMAC() : null; + const changecount = with_device ? 0 : count_changes(ifc.getName()); + const maindev = ifc.getL3Device() || ifc.getDevice(); + const macaddr = maindev ? maindev.getMAC() : null; + const cond00 = !changecount && !ifc.isDynamic() && !ifc.isAlias(); + const cond01 = cond00 && macaddr; + const cond02 = cond00 && maindev; + + function addEntries(label, array) { + return Array.isArray(array) ? array.flatMap((item) => [label, item]) : [label, null]; + } return L.itemlist(node, [ - _('Label'), ifc.get('label'), _('Protocol'), with_device ? null : (desc || '?'), - _('Device'), with_device ? (maindev ? maindev.getShortName() : E('em', _('Not present'))) : null, - _('Uptime'), (!changecount && ifc.isUp()) ? '%t'.format(ifc.getUptime()) : null, - _('MAC'), (!changecount && !ifc.isDynamic() && !ifc.isAlias() && macaddr) ? macaddr : null, - _('RX'), (!changecount && !ifc.isDynamic() && !ifc.isAlias() && maindev) ? '%.2mB (%d %s)'.format(maindev.getRXBytes(), maindev.getRXPackets(), _('Pkts.')) : null, - _('TX'), (!changecount && !ifc.isDynamic() && !ifc.isAlias() && maindev) ? '%.2mB (%d %s)'.format(maindev.getTXBytes(), maindev.getTXPackets(), _('Pkts.')) : null, - _('IPv4'), ipaddrs[0], - _('IPv4'), ipaddrs[1], - _('IPv4'), ipaddrs[2], - _('IPv4'), ipaddrs[3], - _('IPv4'), ipaddrs[4], - _('IPv6'), ip6addrs[0], - _('IPv6'), ip6addrs[1], - _('IPv6'), ip6addrs[2], - _('IPv6'), ip6addrs[3], - _('IPv6'), ip6addrs[4], - _('IPv6'), ip6addrs[5], - _('IPv6'), ip6addrs[6], - _('IPv6'), ip6addrs[7], - _('IPv6'), ip6addrs[8], - _('IPv6'), ip6addrs[9], - _('IPv6-PD'), changecount ? null : ifc.getIP6Prefix(), + _('Device'), with_device ? (maindev ? maindev.getShortName() : E('em', _('Not present'))) : null, + _('Uptime'), (!changecount && ifc.isUp()) ? '%t'.format(ifc.getUptime()) : null, + _('MAC'), (cond01) ? macaddr : null, + _('RX'), (cond02) ? '%.2mB (%d %s)'.format(maindev.getRXBytes(), maindev.getRXPackets(), _('Pkts.')) : null, + _('TX'), (cond02) ? '%.2mB (%d %s)'.format(maindev.getTXBytes(), maindev.getTXPackets(), _('Pkts.')) : null, + ...addEntries(_('IPv4'), changecount ? [] : ifc.getIPAddrs()), + ...addEntries(_('IPv6'), changecount ? [] : ifc.getIP6Addrs()), + ...addEntries(_('IPv6-PD'), changecount ? null : ifc.getIP6Prefixes?.()), + _('Information'), with_device ? null : (ifc.get('disabled') != '1' ? null : _('Interface disabled')), _('Information'), with_device ? null : (ifc.get('auto') != '0' ? null : _('Not started on boot')), - _('Error'), errors ? errors[0] : null, - _('Error'), errors ? errors[1] : null, - _('Error'), errors ? errors[2] : null, - _('Error'), errors ? errors[3] : null, - _('Error'), errors ? errors[4] : null, + ...addEntries(_('Error'), ifc.getErrors()), null, changecount ? E('a', { href: '#', click: L.bind(ui.changes.displayChanges, ui.changes) @@ -128,7 +114,7 @@ function render_modal_status(node, ifc) { function render_ifacebox_status(node, ifc) { var dev = ifc.getL3Device() || ifc.getDevice(), - subdevs = ifc.getDevices(), + subdevs = dev ? dev.getPorts() : null, c = [ render_iface(dev, ifc.isAlias()) ]; if (subdevs && subdevs.length) { @@ -175,9 +161,9 @@ function iface_updown(up, id, ev, force) { ui.showModal(_('Confirm disconnect'), [ E('p', _('You appear to be currently connected to the device via the "%h" interface. Do you really want to shut down the interface?').format(id)), - E('div', { 'class': 'right' }, [ + E('div', { 'class': 'button-row' }, [ E('button', { - 'class': 'cbi-button cbi-button-neutral', + 'class': 'btn cbi-button cbi-button-neutral', 'click': function(ev) { btns[1].classList.remove('spinning'); btns[1].disabled = false; @@ -188,7 +174,7 @@ function iface_updown(up, id, ev, force) { }, _('Cancel')), ' ', E('button', { - 'class': 'cbi-button cbi-button-negative important', + 'class': 'btn cbi-button cbi-button-negative important', 'click': function(ev) { dsc.setAttribute('disconnect', ''); dom.content(dsc, E('em', _('Interface is shutting down...'))); @@ -213,21 +199,55 @@ function iface_updown(up, id, ev, force) { function get_netmask(s, use_cfgvalue) { var readfn = use_cfgvalue ? 'cfgvalue' : 'formvalue', - addropt = s.children.filter(function(o) { return o.option == 'ipaddr'})[0], - addrvals = addropt ? L.toArray(addropt[readfn](s.section)) : [], - maskopt = s.children.filter(function(o) { return o.option == 'netmask'})[0], - maskval = maskopt ? maskopt[readfn](s.section) : null, - firstsubnet = maskval ? addrvals[0] + '/' + maskval : addrvals.filter(function(a) { return a.indexOf('/') > 0 })[0]; + addrs = L.toArray(s[readfn](s.section, 'ipaddr')), + mask = s[readfn](s.section, 'netmask'), + firstsubnet = mask ? addrs[0] + '/' + mask : addrs.filter(function(a) { return a.indexOf('/') > 0 })[0]; if (firstsubnet == null) return null; - var mask = firstsubnet.split('/')[1]; + var subnetmask = firstsubnet.split('/')[1]; - if (!isNaN(mask)) - mask = network.prefixToMask(+mask); + if (!isNaN(subnetmask)) + subnetmask = network.prefixToMask(+subnetmask); - return mask; + return subnetmask; +} + +function has_peerdns(proto) { + switch (proto) { + case 'dhcp': + case 'dhcpv6': + case 'qmi': + case 'ppp': + case 'pppoe': + case 'pppoa': + case 'pptp': + case 'openvpn': + case 'sstp': + return true; + } + + return false; +} + +function has_sourcefilter(proto) { + switch (proto) { + case '3g': + case 'dhcpv6': + case 'directip': + case 'mbim': + case 'modemmanager': + case 'ncm': + case 'ppp': + case 'pppoa': + case 'pppoe': + case 'pptp': + case 'qmi': + return true; + } + + return false; } return view.extend({ @@ -263,7 +283,7 @@ return view.extend({ var e = map.querySelector('[id="cbi-network-%s"] .cbi-button-edit'.format(ifc.getName())); if (e) e.disabled = true; - var link = L.url('admin/system/opkg') + '?query=luci-proto'; + var link = L.url('admin/system/package-manager') + '?query=luci-proto'; dom.content(dsc, [ E('em', _('Unsupported protocol type.')), E('br'), E('a', { href: link }, _('Install protocol extensions...')) @@ -288,20 +308,138 @@ return view.extend({ btn2.disabled = isReadonlyView || btn1.classList.contains('spinning') || btn2.classList.contains('spinning') || dynamic || disabled; } + document.querySelectorAll('.port-status-device[data-device]').forEach(function(node) { + nettools.updateDevBadge(node, network.instantiateDevice(node.getAttribute('data-device'))); + }); + + document.querySelectorAll('.port-status-link[data-device]').forEach(function(node) { + nettools.updatePortStatus(node, network.instantiateDevice(node.getAttribute('data-device'))); + }); + return Promise.all([ resolveZone, network.flushCache() ]); }, load: function() { return Promise.all([ network.getDSLModemType(), + network.getDevices(), + fs.lines('/etc/iproute2/rt_tables'), uci.changes() ]); }, + interfaceBridgeWithIfnameSections: function() { + return uci.sections('network', 'interface').filter(function(ns) { + return ns.type == 'bridge' && !ns.ports && ns.ifname; + }); + }, + + deviceWithIfnameSections: function() { + return uci.sections('network', 'device').filter(function(ns) { + return ns.type == 'bridge' && !ns.ports && ns.ifname; + }); + }, + + interfaceWithIfnameSections: function() { + return uci.sections('network', 'interface').filter(function(ns) { + return !ns.device && ns.ifname; + }); + }, + + handleBridgeMigration: function(ev) { + var tasks = []; + + this.interfaceBridgeWithIfnameSections().forEach(function(ns) { + var device_name = 'br-' + ns['.name']; + + tasks.push(uci.callAdd('network', 'device', null, { + 'name': device_name, + 'type': 'bridge', + 'ports': L.toArray(ns.ifname), + 'mtu': ns.mtu, + 'macaddr': ns.macaddr, + 'igmp_snooping': ns.igmp_snooping + })); + + tasks.push(uci.callSet('network', ns['.name'], { + 'type': '', + 'ifname': '', + 'mtu': '', + 'macaddr': '', + 'igmp_snooping': '', + 'device': device_name + })); + }); + + return Promise.all(tasks) + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderBridgeMigration: function() { + ui.showModal(_('Network bridge configuration migration'), [ + E('p', _('The existing network configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", bridges configuration will be updated and the network will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleBridgeMigration') + }, _('Continue'))) + ]); + }, + + handleIfnameMigration: function(ev) { + var tasks = []; + + this.deviceWithIfnameSections().forEach(function(ds) { + tasks.push(uci.callSet('network', ds['.name'], { + 'ifname': '', + 'ports': L.toArray(ds.ifname) + })); + }); + + this.interfaceWithIfnameSections().forEach(function(ns) { + tasks.push(uci.callSet('network', ns['.name'], { + 'ifname': '', + 'device': ns.ifname + })); + }); + + return Promise.all(tasks) + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderIfnameMigration: function() { + ui.showModal(_('Network ifname configuration migration'), [ + E('p', _('The existing network configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", ifname options will get renamed and the network will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleIfnameMigration') + }, _('Continue'))) + ]); + }, + render: function(data) { + + if (this.interfaceBridgeWithIfnameSections().length) + return this.renderBridgeMigration(); + else if (this.deviceWithIfnameSections().length || this.interfaceWithIfnameSections().length) + return this.renderIfnameMigration(); + var dslModemType = data[0], + netDevs = data[1], m, s, o; + var rtTables = data[2].map(function(l) { + var m = l.trim().match(/^(\d+)\s+(\S+)$/); + return m ? [ +m[1], m[2] ] : null; + }).filter(function(e) { + return e && e[0] > 0; + }); + m = new form.Map('network'); m.tabbed = true; m.chain('dhcp'); @@ -314,7 +452,8 @@ return view.extend({ s.load = function() { return Promise.all([ network.getNetworks(), - firewall.getZones() + firewall.getZones(), + uci.load('system') ]).then(L.bind(function(data) { this.networks = data[0]; this.zones = data[1]; @@ -324,6 +463,8 @@ return view.extend({ s.tab('general', _('General Settings')); s.tab('advanced', _('Advanced Settings')); s.tab('physical', _('Physical Settings')); + s.tab('brport', _('Bridge port specific options')); + s.tab('bridgevlan', _('Bridge VLAN filtering')); s.tab('firewall', _('Firewall Settings')); s.tab('dhcp', _('DHCP Server')); @@ -333,7 +474,7 @@ return view.extend({ }; s.modaltitle = function(section_id) { - return _('Interfaces') + ' » ' + section_id.toUpperCase(); + return _('Interfaces') + ' » ' + section_id; }; s.renderRowActions = function(section_id) { @@ -365,22 +506,23 @@ return view.extend({ tdEl.lastChild.childNodes[3].disabled = true; } + if (dynamic) { + //disable the 'Edit' button on dynamic interfaces + tdEl.lastChild.childNodes[2].disabled = true; + } + return tdEl; }; s.addModalOptions = function(s) { - var protoval = uci.get('network', s.section, 'proto'), - protoclass = protoval ? network.getProtocol(protoval) : null, - o, ifname_single, ifname_multi, ifname_master, proto_select, proto_switch, type, stp, igmp, ss, so; - - if (!protoval) - return; + var protoval = uci.get('network', s.section, 'proto') || 'none', + o, proto_select, proto_switch, type, stp, igmp, ss, so; return network.getNetwork(s.section).then(L.bind(function(ifc) { var protocols = network.getProtocols(); protocols.sort(function(a, b) { - return a.getProtocol() > b.getProtocol(); + return L.naturalCompare(a.getProtocol(), b.getProtocol()); }); o = s.taboption('general', form.DummyValue, '_ifacestat_modal', _('Status')); @@ -395,12 +537,10 @@ return view.extend({ }, this); o.write = function() {}; - o = s.taboption('general', form.Value, 'label', _('Label')); - o.modalonly = true; - o.optional = true; proto_select = s.taboption('general', form.ListValue, 'proto', _('Protocol')); proto_select.modalonly = true; + proto_select.default = 'none'; proto_switch = s.taboption('general', form.Button, '_switch_proto'); proto_switch.modalonly = true; @@ -414,106 +554,20 @@ return view.extend({ .then(L.bind(this.renderMoreOptionsModal, this, s.section)); }, this); + o = s.taboption('general', widgets.DeviceSelect, '_net_device', _('Device')); + o.ucioption = 'device'; + o.nobridges = false; + o.optional = false; + o.network = ifc.getName(); + o.exclude = '@' + ifc.getName(); + + o = s.taboption('general', form.Flag, 'disabled', _('Disable this interface')); + o.modalonly = true; + o = s.taboption('general', form.Flag, 'auto', _('Bring up on boot')); o.modalonly = true; o.default = o.enabled; - type = s.taboption('physical', form.ListValue, 'type', _('Type')); - type.value('',_('Normal')); - type.value('bridge',_('Bridge')); - type.value('macvlan',_('MacVLAN')); - type.write = type.remove = function(section_id, value) { - var protocol = network.getProtocol(proto_select.formvalue(section_id)), - ifnameopt = this.section.children.filter(function(o) { - if (value == 'bridge') - return o.option == 'ifname_multi'; - else if (value == 'macvlan') - return o.option == 'ifname_master'; - else - return o.option == 'ifname_single'; - })[0]; - - if (!protocol.isVirtual() && !this.isActive(section_id)) - return; - - var old_ifnames = [], - devs = ifc.getDevices() || L.toArray(ifc.getDevice()); - - for (var i = 0; i < devs.length; i++) - old_ifnames.push(devs[i].getName()); - - var new_ifnames = L.toArray(ifnameopt.formvalue(section_id)); - - if (!value) - new_ifnames.length = Math.max(new_ifnames.length, 1); - - old_ifnames.sort(); - new_ifnames.sort(); - - for (var i = 0; i < Math.max(old_ifnames.length, new_ifnames.length); i++) { - if (old_ifnames[i] != new_ifnames[i]) { - // backup_ifnames() - for (var j = 0; j < old_ifnames.length; j++) - ifc.deleteDevice(old_ifnames[j]); - - for (var j = 0; j < new_ifnames.length; j++) - ifc.addDevice(new_ifnames[j]); - - break; - } - } - - if (value) - uci.set('network', section_id, 'type', value); - else - uci.unset('network', section_id, 'type'); - }; - - stp = s.taboption('physical', form.Flag, 'stp', _('Enable STP'), _('Enables the Spanning Tree Protocol on this bridge')); - - igmp = s.taboption('physical', form.Flag, 'igmp_snooping', _('Enable IGMP snooping'), _('Enables IGMP snooping on this bridge')); - - ifname_master = s.taboption('physical', widgets.DeviceSelect, 'ifname_master', _('Base interface')); - ifname_master.nobridges = true; - ifname_master.noaliases = true; - ifname_master.optional = false; - ifname_master.modalonly = true; - ifname_master.network = ifc.getName(); - //ifname_master.write = ifname_master.remove = function() {}; - ifname_master.ucioption = 'masterintf'; - //ifname_master.cfgvalue = function(section_id) { - // return uci.get('network', section_id, 'masterintf'); - //}; - //ifname_master.write = function(section_id, value) { - // uci.set('network', section_id, 'masterintf', value); - //}; - - ifname_single = s.taboption('physical', widgets.DeviceSelect, 'ifname_single', _('Interface')); - ifname_single.nobridges = ifc.isBridge(); - ifname_single.noaliases = false; - ifname_single.optional = false; - ifname_single.network = ifc.getName(); - ifname_single.write = ifname_single.remove = function() {}; - - ifname_multi = s.taboption('physical', widgets.DeviceSelect, 'ifname_multi', _('Interface')); - ifname_multi.nobridges = ifc.isBridge(); - ifname_multi.noaliases = true; - ifname_multi.multiple = true; - ifname_multi.optional = true; - ifname_multi.network = ifc.getName(); - ifname_multi.display_size = 6; - ifname_multi.write = ifname_multi.remove = function() {}; - - ifname_single.cfgvalue = ifname_multi.cfgvalue = function(section_id) { - var devs = ifc.getDevices() || L.toArray(ifc.getDevice()), - ifnames = []; - - for (var i = 0; i < devs.length; i++) - ifnames.push(devs[i].getName()); - - return ifnames; - }; - if (L.hasSystemFeature('firewall')) { o = s.taboption('firewall', widgets.ZoneSelect, '_zone', _('Create / Assign firewall-zone'), _('Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the custom field to define a new zone and attach the interface to it.')); o.network = ifc.getName(); @@ -555,33 +609,12 @@ return view.extend({ for (var i = 0; i < protocols.length; i++) { proto_select.value(protocols[i].getProtocol(), protocols[i].getI18n()); - if (protocols[i].getProtocol() != uci.get('network', s.section, 'proto')) + if (protocols[i].getProtocol() != protoval) proto_switch.depends('proto', protocols[i].getProtocol()); - - if (!protocols[i].isVirtual()) { - type.depends('proto', protocols[i].getProtocol()); - stp.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); - igmp.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); - ifname_single.depends({ type: '', proto: protocols[i].getProtocol() }); - ifname_master.depends({ type: 'macvlan', proto: protocols[i].getProtocol() }); - ifname_multi.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); - } } - o = s.taboption('advanced', form.ListValue, 'multipath', _('Multipath setting'), _('Only one interface must be set as Master.')); - o.value('on',_('Enabled')); - o.value('off',_('Disabled')); - o.value('master',_('Master')); - o.value('backup',_('Backup')); - o.default = 'off'; - - o = s.taboption('advanced', form.Value, 'addlatency', _('Additional latency')); - o.datatype = 'uinteger'; - o.default = '0'; - if (L.hasSystemFeature('dnsmasq') || L.hasSystemFeature('odhcpd')) { o = s.taboption('dhcp', form.SectionValue, '_dhcp', form.TypedSection, 'dhcp'); - o.depends('proto', 'static'); ss = o.subsection; ss.uciconfig = 'dhcp'; @@ -591,6 +624,7 @@ return view.extend({ ss.tab('general', _('General Setup')); ss.tab('advanced', _('Advanced Settings')); ss.tab('ipv6', _('IPv6 Settings')); + ss.tab('ipv6-ra', _('IPv6 RA Settings')); ss.filter = function(section_id) { return (uci.get('dhcp', section_id, 'interface') == ifc.getName()); @@ -601,124 +635,521 @@ return view.extend({ E('p', _('No DHCP Server configured for this interface') + '   '), E('button', { 'class': 'cbi-button cbi-button-add', - 'title': _('Setup DHCP Server'), + 'title': _('Set up DHCP Server'), 'click': ui.createHandlerFn(this, function(section_id, ev) { this.map.save(function() { uci.add('dhcp', 'dhcp', section_id); uci.set('dhcp', section_id, 'interface', section_id); - uci.set('dhcp', section_id, 'start', 100); - uci.set('dhcp', section_id, 'limit', 150); - uci.set('dhcp', section_id, 'leasetime', '12h'); + + if (protoval == 'static') { + uci.set('dhcp', section_id, 'start', 100); + uci.set('dhcp', section_id, 'limit', 150); + uci.set('dhcp', section_id, 'leasetime', '12h'); + } + else { + uci.set('dhcp', section_id, 'ignore', 1); + } }); }, ifc.getName()) - }, _('Setup DHCP Server')) + }, _('Set up DHCP Server')) ]); }; ss.taboption('general', form.Flag, 'ignore', _('Ignore interface'), _('Disable DHCP for this interface.')); - so = ss.taboption('general', form.Value, 'start', _('Start'), _('Lowest leased address as offset from the network address.')); - so.optional = true; - so.datatype = 'or(uinteger,ip4addr("nomask"))'; - so.default = '100'; + if (protoval == 'static') { + so = ss.taboption('general', form.Value, 'start', _('Start', 'DHCP IP range start address'), _('Lowest leased address as offset from the network address.')); + so.optional = true; + so.datatype = 'or(uinteger,ip4addr("nomask"))'; + so.default = '100'; - so = ss.taboption('general', form.Value, 'limit', _('Limit'), _('Maximum number of leased addresses.')); - so.optional = true; - so.datatype = 'uinteger'; - so.default = '150'; + so = ss.taboption('general', form.Value, 'limit', _('Limit'), _('Maximum number of leased addresses.')); + so.optional = true; + so.datatype = 'uinteger'; + so.default = '150'; - so = ss.taboption('general', form.Value, 'leasetime', _('Lease time'), _('Expiry time of leased addresses, minimum is 2 minutes (2m).')); - so.optional = true; - so.default = '12h'; + so = ss.taboption('general', form.Value, 'leasetime', _('Lease time'), _('Expiry time of leased addresses, minimum is 2 minutes (2m).')); + so.optional = true; + so.default = '12h'; + so.validate = function (section_id, value) { + if (value === "infinite" || value === "deprecated") { + return true; + } - so = ss.taboption('advanced', form.Flag, 'dynamicdhcp', _('Dynamic DHCP'), _('Dynamically allocate DHCP addresses for clients. If disabled, only clients having static leases will be served.')); - so.default = so.enabled; + const regex = new RegExp("^[0-9]+[smhdw]?$", "i"); + if (regex.test(value)) { + return true; + } + return _("Invalid DHCP lease time format. Use integer values optionally followed by s, m, h, d, or w."); + } - ss.taboption('advanced', form.Flag, 'force', _('Force'), _('Force DHCP on this network even if another server is detected.')); + so = ss.taboption('advanced', form.Flag, 'dynamicdhcp', _('Dynamic DHCP'), _('Dynamically allocate DHCP addresses for clients. If disabled, only clients having static leases will be served.')); + so.default = so.enabled; - // XXX: is this actually useful? - //ss.taboption('advanced', form.Value, 'name', _('Name'), _('Define a name for this network.')); + ss.taboption('advanced', form.Flag, 'force', _('Force'), _('Force DHCP on this network even if another server is detected.')); - so = ss.taboption('advanced', form.Value, 'netmask', _('IPv4-Netmask'), _('Override the netmask sent to clients. Normally it is calculated from the subnet that is served.')); - so.optional = true; - so.datatype = 'ip4addr'; + // XXX: is this actually useful? + //ss.taboption('advanced', form.Value, 'name', _('Name'), _('Define a name for this network.')); - so.render = function(option_index, section_id, in_table) { - this.placeholder = get_netmask(s, true); - return form.Value.prototype.render.apply(this, [ option_index, section_id, in_table ]); - }; + so = ss.taboption('advanced', form.Value, 'netmask', _('IPv4-Netmask'), _('Override the netmask sent to clients. Normally it is calculated from the subnet that is served.')); + so.optional = true; + so.datatype = 'ip4addr'; + + so.render = function(option_index, section_id, in_table) { + this.placeholder = get_netmask(s, true); + return form.Value.prototype.render.apply(this, [ option_index, section_id, in_table ]); + }; + + so.validate = function(section_id, value) { + var uielem = this.getUIElement(section_id); + if (uielem) + uielem.setPlaceholder(get_netmask(s, false)); + return form.Value.prototype.validate.apply(this, [ section_id, value ]); + }; + + ss.taboption('advanced', form.DynamicList, 'dhcp_option', _('DHCP-Options'), _('Define additional DHCP options, for example "6,192.168.2.1,192.168.2.2" which advertises different DNS servers to clients.')); + } + + + var has_other_master = uci.sections('dhcp', 'dhcp').filter(function(s) { + return (s.interface != ifc.getName() && s.master == '1'); + })[0]; + + so = ss.taboption('ipv6', form.Flag , 'master', _('Designated master')); + so.readonly = has_other_master ? true : false; + so.description = has_other_master + ? _('Interface "%h" is already marked as designated master.').format(has_other_master.interface || has_other_master['.name']) + : _('Set this interface as master for RA and DHCPv6 relaying as well as NDP proxying.') + ; so.validate = function(section_id, value) { - var node = this.map.findElement('id', this.cbid(section_id)); - if (node) - node.querySelector('input').setAttribute('placeholder', get_netmask(s, false)); - return form.Value.prototype.validate.apply(this, [ section_id, value ]); + var hybrid_downstream_desc = _('Operate in relay mode if a designated master interface is configured and active, otherwise fall back to server mode.'), + ndp_downstream_desc = _('Operate in relay mode if a designated master interface is configured and active, otherwise disable NDP proxying.'), + hybrid_master_desc = _('Operate in relay mode if an upstream IPv6 prefix is present, otherwise disable service.'), + ra_server_allowed = true, + checked = this.formvalue(section_id), + dhcpv6 = this.section.getOption('dhcpv6').getUIElement(section_id), + ndp = this.section.getOption('ndp').getUIElement(section_id), + ra = this.section.getOption('ra').getUIElement(section_id); + + /* Assume that serving RAs by default is fine, but disallow it for certain + interface protocols such as DHCP, DHCPv6 or the various PPP flavors. + The intent is only to allow RA serving for interface protocols doing + some kind of static IP config over something resembling a layer 2 + Ethernet device. */ + switch (protoval) { + case 'dhcp': + case 'dhcpv6': + case '3g': + case 'l2tp': + case 'ppp': + case 'pppoa': + case 'pppoe': + case 'pptp': + case 'pppossh': + case 'ipip': + case 'gre': + case 'grev6': + ra_server_allowed = false; + break; + } + + if (checked == '1' || !ra_server_allowed) { + dhcpv6.node.querySelector('li[data-value="server"]').setAttribute('unselectable', ''); + + if (dhcpv6.getValue() == 'server') + dhcpv6.setValue('hybrid'); + + ra.node.querySelector('li[data-value="server"]').setAttribute('unselectable', ''); + + if (ra.getValue() == 'server') + ra.setValue('hybrid'); + } + + if (checked == '1') { + dhcpv6.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_master_desc; + ra.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_master_desc; + ndp.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_master_desc; + } + else { + if (ra_server_allowed) { + dhcpv6.node.querySelector('li[data-value="server"]').removeAttribute('unselectable'); + ra.node.querySelector('li[data-value="server"]').removeAttribute('unselectable'); + } + + dhcpv6.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_downstream_desc; + ra.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_downstream_desc; + ndp.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = ndp_downstream_desc ; + } + + return true; }; - ss.taboption('advanced', form.DynamicList, 'dhcp_option', _('DHCP-Options'), _('Define additional DHCP options, for example "6,192.168.2.1,192.168.2.2" which advertises different DNS servers to clients.')); - for (var i = 0; i < ss.children.length; i++) - if (ss.children[i].option != 'ignore') - ss.children[i].depends('ignore', '0'); + so = ss.taboption('ipv6', form.RichListValue, 'ra', _('RA-Service'), + _('Configures the operation mode of the RA service on this interface.')); + so.optional = true; + so.value('', _('disabled'), + _('Do not send any RA messages on this interface.')); + so.value('server', _('server mode'), + _('Send RA messages advertising this device as IPv6 router.')); + so.value('relay', _('relay mode'), + _('Forward RA messages received on the designated master interface to downstream interfaces.')); + so.value('hybrid', _('hybrid mode'), ' '); - so = ss.taboption('ipv6', form.ListValue, 'ra', _('Router Advertisement-Service')); - so.value('', _('disabled')); - so.value('server', _('server mode')); - so.value('relay', _('relay mode')); - so.value('hybrid', _('hybrid mode')); - so = ss.taboption('ipv6', form.ListValue, 'dhcpv6', _('DHCPv6-Service')); - so.value('', _('disabled')); - so.value('server', _('server mode')); - so.value('relay', _('relay mode')); - so.value('hybrid', _('hybrid mode')); - - so = ss.taboption('ipv6', form.ListValue, 'ndp', _('NDP-Proxy')); - so.value('', _('disabled')); - so.value('relay', _('relay mode')); - so.value('hybrid', _('hybrid mode')); - - so = ss.taboption('ipv6', form.Flag , 'master', _('Master'), _('Set this interface as master for the dhcpv6 relay.')); - so.depends('dhcpv6', 'relay'); - so.depends('dhcpv6', 'hybrid'); - - so = ss.taboption('ipv6', form.ListValue, 'ra_management', _('DHCPv6-Mode'), _('Default is stateless + stateful')); - so.value('0', _('stateless')); - so.value('1', _('stateless + stateful')); - so.value('2', _('stateful-only')); - so.depends('dhcpv6', 'server'); - so.depends('dhcpv6', 'hybrid'); - so.default = '1'; - - so = ss.taboption('ipv6', form.Flag, 'ra_default', _('Always announce default router'), _('Announce as default router even if no public prefix is available.')); + so = ss.taboption('ipv6-ra', form.RichListValue, 'ra_default', _('Default router'), + _('Configures the default router advertisement in RA messages.')); + so.optional = true; + so.value('', _('automatic'), + _('Announce this device as default router if a local IPv6 default route is present.')); + so.value('1', _('on available prefix'), + _('Announce this device as default router if a public IPv6 prefix is available, regardless of local default route availability.')); + so.value('2', _('forced'), + _('Announce this device as default router regardless of whether a prefix or default route is present.')); so.depends('ra', 'server'); - so.depends('ra', 'hybrid'); + so.depends({ ra: 'hybrid', master: '0' }); - ss.taboption('ipv6', form.DynamicList, 'dns', _('Announced DNS servers')); - ss.taboption('ipv6', form.DynamicList, 'domain', _('Announced DNS domains')); + so = ss.taboption('ipv6-ra', form.Flag, 'ra_slaac', _('Enable SLAAC'), + _('Set the autonomous address-configuration flag in the prefix information options of sent RA messages. When enabled, clients will perform stateless IPv6 address autoconfiguration.')); + so.default = so.enabled; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.RichListValue, 'ra_flags', _('RA Flags'), + _('Specifies the flags sent in RA messages, for example to instruct clients to request further information via stateful DHCPv6.')); + so.optional = true; + so.value('managed-config', _('managed config (M)'), + _('The Managed address configuration (M) flag indicates that IPv6 addresses are available via DHCPv6.')); + so.value('other-config', _('other config (O)'), + _('The Other configuration (O) flag indicates that other information, such as DNS servers, is available via DHCPv6.')); + so.value('home-agent', _('mobile home agent (H)'), + _('The Mobile IPv6 Home Agent (H) flag indicates that the device is also acting as Mobile IPv6 home agent on this link.')); + so.multiple = true; + so.select_placeholder = _('none'); + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.cfgvalue = function(section_id) { + var flags = L.toArray(uci.get('dhcp', section_id, 'ra_flags')); + return flags.length ? flags : [ 'other-config' ]; + }; + so.remove = function(section_id) { + var existing = L.toArray(uci.get('dhcp', section_id, 'ra_flags')); + if (this.isActive(section_id)) { + if (existing.length != 1 || existing[0] != 'none') + uci.set('dhcp', section_id, 'ra_flags', [ 'none' ]); + } + else if (existing.length) { + uci.unset('dhcp', section_id, 'ra_flags'); + } + }; + + so = ss.taboption('ipv6-ra', form.Value, 'ra_pref64', _('NAT64 prefix'), _('Announce NAT64 prefix in RA messages.')); + so.optional = true; + so.datatype = 'cidr6'; + so.placeholder = '64:ff9b::/96'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_maxinterval', _('Max RA interval'), _('Maximum time allowed between sending unsolicited RA. Default is 600 seconds.')); + so.optional = true; + so.datatype = 'uinteger'; + so.placeholder = '600'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_mininterval', _('Min RA interval'), _('Minimum time allowed between sending unsolicited RA. Default is 200 seconds.')); + so.optional = true; + so.datatype = 'uinteger'; + so.placeholder = '200'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_lifetime', _('RA Lifetime'), _('Router Lifetime published in RA messages. Maximum is 9000 seconds.')); + so.optional = true; + so.datatype = 'range(0, 9000)'; + so.placeholder = '1800'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_mtu', _('RA MTU'), _('The MTU to be published in RA messages. Minimum is 1280 bytes.')); + so.optional = true; + so.datatype = 'range(1280, 65535)'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.load = function(section_id) { + var dev = ifc.getL3Device(), + path = dev ? "/proc/sys/net/ipv6/conf/%s/mtu".format(dev.getName()) : null; + + return Promise.all([ + dev ? L.resolveDefault(fs.read(path), dev.getMTU()) : null, + this.super('load', [section_id]) + ]).then(L.bind(function(res) { + this.placeholder = +res[0]; + + return res[1]; + }, this)); + }; + + so = ss.taboption('ipv6-ra', form.Value, 'ra_hoplimit', _('RA Hop Limit'), _('The maximum hops to be published in RA messages. Maximum is 255 hops.')); + so.optional = true; + so.datatype = 'range(0, 255)'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.load = function(section_id) { + var dev = ifc.getL3Device(), + path = dev ? "/proc/sys/net/ipv6/conf/%s/hop_limit".format(dev.getName()) : null; + + return Promise.all([ + dev ? L.resolveDefault(fs.read(path), 64) : null, + this.super('load', [section_id]) + ]).then(L.bind(function(res) { + this.placeholder = +res[0]; + + return res[1]; + }, this)); + }; + + + so = ss.taboption('ipv6', form.RichListValue, 'dhcpv6', _('DHCPv6-Service'), + _('Configures the operation mode of the DHCPv6 service on this interface.')); + so.optional = true; + so.value('', _('disabled'), + _('Do not offer DHCPv6 service on this interface.')); + so.value('server', _('server mode'), + _('Provide a DHCPv6 server on this interface and reply to DHCPv6 solicitations and requests.')); + so.value('relay', _('relay mode'), + _('Forward DHCPv6 messages between the designated master interface and downstream interfaces.')); + so.value('hybrid', _('hybrid mode'), ' '); + + so = ss.taboption('ipv6', form.Value, 'dhcpv6_pd_min_len', _('PD minimum length'), + _('Configures the minimum delegated prefix length assigned to a requesting downstream router, potentially overriding a requested prefix length. If left unspecified, the device will assign the smallest available prefix greater than or equal to the requested prefix.')); + so.datatype = 'range(1,62)'; + so.depends('dhcpv6', 'server'); + + so = ss.taboption('ipv6', form.DynamicList, 'dns', _('Announced IPv6 DNS servers'), + _('Specifies a fixed list of IPv6 DNS server addresses to announce via DHCPv6. If left unspecified, the device will announce itself as IPv6 DNS server unless the Local IPv6 DNS server option is disabled.')); + so.datatype = 'ip6addr("nomask")'; /* restrict to IPv6 only for now since dnsmasq (DHCPv4) does not honour this option */ + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.depends('dhcpv6', 'server'); + so.depends({ dhcpv6: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6', form.Flag, 'dns_service', _('Local IPv6 DNS server'), + _('Announce this device as IPv6 DNS server.')); + so.default = so.enabled; + so.depends({ ra: 'server', dns: /^$/ }); + so.depends({ ra: 'hybrid', dns: /^$/, master: '0' }); + so.depends({ dhcpv6: 'server', dns: /^$/ }); + so.depends({ dhcpv6: 'hybrid', dns: /^$/, master: '0' }); + + so = ss.taboption('ipv6', form.DynamicList, 'domain', _('Announced DNS domains'), + _('Specifies a fixed list of DNS search domains to announce via DHCPv6. If left unspecified, the local device DNS search domain will be announced.')); + so.datatype = 'hostname'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.depends('dhcpv6', 'server'); + so.depends({ dhcpv6: 'hybrid', master: '0' }); + + //This is a DHCPv6 specific odhcpd setting + so = ss.taboption('ipv6', form.DynamicList, 'ntp', _('NTP Servers'), + _('DHCPv6 option 56. %s.', 'DHCPv6 option 56. RFC5908 link').format('RFC5908').format('https://www.rfc-editor.org/rfc/rfc5908#section-4')); + so.datatype = 'host(0)'; + for(var x of uci.get('system', 'ntp', 'server') || '') { + so.value(x); + } + var local_nets = this.networks.filter(function(n) { return n.getName() != 'loopback' }); + if(local_nets) { + // If ntpd is set up, suggest our IP(v6) also + if(uci.get('system', 'ntp', 'enable_server')) { + local_nets.forEach(function(n){ + n.getIPAddrs().forEach(function(i4) { + so.value(i4.split('/')[0]); + }); + n.getIP6Addrs().forEach(function(i6) { + so.value(i6.split('/')[0]); + }); + }); + } + } + so.optional = true; + so.rmempty = true; + so.depends('dhcpv6', 'server'); + so.depends({ dhcpv6: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6', form.RichListValue, 'ndp', _('NDP-Proxy'), + _('Configures the operation mode of the NDP proxy service on this interface.')); + so.optional = true; + so.value('', _('disabled'), + _('Do not proxy any NDP packets.')); + so.value('relay', _('relay mode'), + _('Forward NDP NS and NA messages between the designated master interface and downstream interfaces.')); + so.value('hybrid', _('hybrid mode'), ' '); + + + so = ss.taboption('ipv6', form.Flag, 'ndproxy_routing', _('Learn routes'), _('Set up routes for proxied IPv6 neighbours.')); + so.default = so.enabled; + so.depends('ndp', 'relay'); + so.depends('ndp', 'hybrid'); + + so = ss.taboption('ipv6', form.Flag, 'ndproxy_slave', _('NDP-Proxy slave'), _('Set interface as NDP-Proxy external slave. Default is off.')); + so.depends({ ndp: 'relay', master: '0' }); + so.depends({ ndp: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6', form.Value, 'preferred_lifetime', _('IPv6 Prefix Lifetime'), _('Preferred lifetime for a prefix.')); + so.optional = true; + so.placeholder = '12h'; + so.value('5m', _('5m (5 minutes)')); + so.value('3h', _('3h (3 hours)')); + so.value('12h', _('12h (12 hours - default)')); + so.value('7d', _('7d (7 days)')); + + //This is a ra_* setting, but its placement is more logical/findable under IPv6 settings. + so = ss.taboption('ipv6', form.Flag, 'ra_useleasetime', _('Follow IPv4 Lifetime'), _('DHCPv4 leasetime is used as limit and preferred lifetime of the IPv6 prefix.')); + so.optional = true; } ifc.renderFormOptions(s); + // Common interface options + o = nettools.replaceOption(s, 'advanced', form.Flag, 'defaultroute', _('Use default gateway'), _('If unchecked, no default route is configured')); + o.default = o.enabled; + + if (has_peerdns(protoval)) { + o = nettools.replaceOption(s, 'advanced', form.Flag, 'peerdns', _('Use DNS servers advertised by peer'), _('If unchecked, the advertised DNS server addresses are ignored')); + o.default = o.enabled; + } + + o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'dns', _('Use custom DNS servers')); + if (has_peerdns(protoval)) + o.depends('peerdns', '0'); + o.datatype = 'ipaddr'; + + o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'dns_search', _('DNS search domains')); + if (protoval != 'static') + o.depends('peerdns', '0'); + o.datatype = 'hostname'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'dns_metric', _('DNS weight'), _('The DNS server entries in the local resolv.conf are primarily sorted by the weight specified here')); + o.datatype = 'uinteger'; + o.placeholder = '0'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'metric', _('Use gateway metric'), + _('Metric is an ordinal, where a gateway with 1 is chosen 1st, 2 is chosen 2nd, 3 is chosen 3rd, etc')); + o.datatype = 'uinteger'; + o.placeholder = '0'; + + o = nettools.replaceOption(s,'advanced', form.ListValue, 'multipath', _('Multipath setting'), _('Only one interface must be set as Master.')); + o.value('on',_('Enabled')); + o.value('off',_('Disabled')); + o.value('master',_('Master')); + o.value('backup',_('Backup')); + o.default = 'off'; + + o = nettools.replaceOption(s,'advanced', form.Value, 'addlatency', _('Additional latency')); + o.datatype = 'uinteger'; + o.default = '0'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip4table', _('Override IPv4 routing table')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6table', _('Override IPv6 routing table')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + + if (has_sourcefilter(protoval)) { + o = nettools.replaceOption(s, 'advanced', form.Flag, 'sourcefilter', _('IPv6 source routing'), _('Automatically handle multiple uplink interfaces using source-based policy routing.')); + o.default = o.enabled; + } + + o = nettools.replaceOption(s, 'advanced', form.Flag, 'delegate', _('Delegate IPv6 prefixes'), _('Enable downstream delegation of IPv6 prefixes available on this interface')); + o.default = o.enabled; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6assign', _('IPv6 assignment length'), _('Assign a part of given length of every public IPv6-prefix to this interface')); + o.value('', _('disabled')); + o.value('64'); + o.datatype = 'max(128)'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6hint', _('IPv6 assignment hint'), _('Assign prefix parts using this hexadecimal subprefix ID for this interface.')); + o.placeholder = '0'; + o.validate = function(section_id, value) { + if (value == null || value == '') + return true; + + var n = parseInt(value, 16); + + if (!/^(0x)?[0-9a-fA-F]+$/.test(value) || isNaN(n) || n >= 0xffffffff) + return _('Expecting a hexadecimal assignment hint'); + + return true; + }; + for (var i = 33; i <= 64; i++) + o.depends('ip6assign', String(i)); + + + o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'ip6class', _('IPv6 prefix filter'), _('If set, downstream subnets are only allocated from the given IPv6 prefix classes.')); + o.value('local', 'local (%s)'.format(_('Local ULA'))); + + var prefixClasses = {}; + + this.networks.forEach(function(net) { + var prefixes = net._ubus('ipv6-prefix'); + if (Array.isArray(prefixes)) { + prefixes.forEach(function(pfx) { + if (L.isObject(pfx) && typeof(pfx['class']) == 'string') { + prefixClasses[pfx['class']] = prefixClasses[pfx['class']] || {}; + prefixClasses[pfx['class']][net.getName()] = true; + } + }); + } + }); + + Object.keys(prefixClasses).sort().forEach(function(c) { + var networks = Object.keys(prefixClasses[c]).sort().join(', '); + o.value(c, (c != networks) ? '%s (%s)'.format(c, networks) : c); + }); + + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6ifaceid', _('IPv6 suffix'), _("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') for the interface.")); + o.datatype = 'ip6hostid'; + o.placeholder = '::1'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6weight', _('IPv6 preference'), _('When delegating prefixes to multiple downstreams, interfaces with a higher preference value are considered first when allocating subnets.')); + o.datatype = 'uinteger'; + o.placeholder = '0'; + for (var i = 0; i < s.children.length; i++) { o = s.children[i]; switch (o.option) { case 'proto': - case 'delegate': case 'auto': - case 'type': - case 'stp': - case 'igmp_snooping': - case 'ifname_single': - case 'ifname_multi': - case 'ifname_master': case '_dhcp': case '_zone': case '_switch_proto': case '_ifacestat_modal': continue; + case 'igmp_snooping': + case 'stp': + case 'type': + case '_net_device': + var deps = []; + for (var j = 0; j < protocols.length; j++) { + if (!protocols[j].isVirtual()) { + if (o.deps.length) + for (var k = 0; k < o.deps.length; k++) + deps.push(Object.assign({ proto: protocols[j].getProtocol() }, o.deps[k])); + else + deps.push({ proto: protocols[j].getProtocol() }); + } + } + o.deps = deps; + break; + default: if (o.deps.length) for (var j = 0; j < o.deps.length; j++) @@ -727,17 +1158,31 @@ return view.extend({ o.depends('proto', protoval); } } + + this.activeSection = s.section; }, this)); }; + s.handleModalCancel = function(/* ... */) { + var type = uci.get('network', this.activeSection || this.addedSection, 'type'), + device = (type == 'bridge') ? 'br-%s'.format(this.activeSection || this.addedSection) : null; + + uci.sections('network', 'bridge-vlan', function(bvs) { + if (device != null && bvs.device == device) + uci.remove('network', bvs['.name']); + }); + + return form.GridSection.prototype.handleModalCancel.apply(this, arguments); + }; + s.handleAdd = function(ev) { var m2 = new form.Map('network'), s2 = m2.section(form.NamedSection, '_new_'), protocols = network.getProtocols(), - proto, name, type, ifname_single, ifname_multi, ifname_master; + proto, name, device; protocols.sort(function(a, b) { - return a.getProtocol() > b.getProtocol(); + return L.naturalCompare(a.getProtocol(), b.getProtocol()); }); s2.render = function() { @@ -765,37 +1210,20 @@ return view.extend({ }; proto = s2.option(form.ListValue, 'proto', _('Protocol')); - proto.validate = name.validate; + proto.onchange = function(ev, section_id, value) { + var elem = name.getUIElement(section_id); + elem.triggerValidation(); + }; - type = s2.option(form.ListValue, 'type', _('Interface type')); - type.value('',_('Normal')); - type.value('bridge',_('Bridge')); - type.value('macvlan',_('MacVLAN')); - - ifname_single = s2.option(widgets.DeviceSelect, 'ifname_single', _('Interface')); - ifname_single.noaliases = false; - ifname_single.optional = false; - - ifname_master = s2.option(widgets.DeviceSelect, 'ifname_master', _('Base interface')); - ifname_master.noaliases = false; - ifname_master.optional = false; - - ifname_multi = s2.option(widgets.DeviceSelect, 'ifname_multi', _('Interface')); - ifname_multi.nobridges = true; - ifname_multi.noaliases = true; - ifname_multi.multiple = true; - ifname_multi.optional = true; - ifname_multi.display_size = 6; + device = s2.option(widgets.DeviceSelect, 'device', _('Device')); + device.noaliases = false; + device.optional = false; for (var i = 0; i < protocols.length; i++) { proto.value(protocols[i].getProtocol(), protocols[i].getI18n()); - if (!protocols[i].isVirtual()) { - type.depends({ proto: protocols[i].getProtocol() }); - ifname_single.depends({ type: '', proto: protocols[i].getProtocol() }); - ifname_multi.depends({ type: 'bridge', proto: protocols[i].getProtocol() }); - ifname_master.depends({ type: 'macvlan', proto: protocols[i].getProtocol() }); - } + if (!protocols[i].isVirtual()) + device.depends('proto', protocols[i].getProtocol()); } m2.render().then(L.bind(function(nodes) { @@ -811,7 +1239,7 @@ return view.extend({ 'click': ui.createHandlerFn(this, function(ev) { var nameval = name.isValid('_new_') ? name.formvalue('_new_') : null, protoval = proto.isValid('_new_') ? proto.formvalue('_new_') : null, - protoclass = protoval ? network.getProtocol(protoval) : null; + protoclass = protoval ? network.getProtocol(protoval, nameval) : null; if (nameval == null || protoval == null || nameval == '' || protoval == '') return; @@ -827,22 +1255,14 @@ return view.extend({ return m.save(function() { var section_id = uci.add('network', 'interface', nameval); - uci.set('network', section_id, 'proto', protoval); + protoclass.set('proto', protoval); + protoclass.addDevice(device.formvalue('_new_')); - if (ifname_single.isActive('_new_')) { - uci.set('network', section_id, 'ifname', ifname_single.formvalue('_new_')); - } - else if (ifname_multi.isActive('_new_')) { - uci.set('network', section_id, 'type', 'bridge'); - uci.set('network', section_id, 'ifname', L.toArray(ifname_multi.formvalue('_new_')).join(' ')); - } - else if (ifname_master.isActive('_new_')) { - uci.set('network', section_id, 'type', 'macvlan'); - uci.set('network', section_id, 'ifname', section_id); - uci.set('network', section_id, 'masterintf', L.toArray(ifname_multi.formvalue('_new_')).join(' ')); - } + m.children[0].addedSection = section_id; + + ui.hideModal(); + ui.showModal(null, E('p', { 'class': 'spinning' }, [ _('Loading data…') ])); }).then(L.bind(m.children[0].renderMoreOptionsModal, m.children[0], nameval)); - }); }) }, _('Create interface')) @@ -871,9 +1291,9 @@ return view.extend({ var node = E('div', { 'class': 'ifacebox' }, [ E('div', { 'class': 'ifacebox-head', - 'style': 'background-color:%s'.format(zone ? zone.getColor() : '#EEEEEE'), + 'style': firewall.getZoneColorStyle(zone), 'title': zone ? _('Part of zone %q').format(zone.getName()) : _('No zone assigned') - }, E('strong', net.getName().toUpperCase())), + }, E('strong', net.getName())), E('div', { 'class': 'ifacebox-body', 'id': '%s-ifc-devices'.format(section_id), @@ -913,46 +1333,298 @@ return view.extend({ o = s.taboption('advanced', form.Flag, 'force_link', _('Force link'), _('Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers).')); o.modalonly = true; - o.render = function(option_index, section_id, in_table) { - var protoopt = this.section.children.filter(function(o) { return o.option == 'proto' })[0], - protoval = protoopt ? protoopt.cfgvalue(section_id) : null; - - this.default = (protoval == 'static') ? this.enabled : this.disabled; - return this.super('render', [ option_index, section_id, in_table ]); + o.defaults = { + '1': [{ proto: 'static' }], + '0': [] }; + // Device configuration + s = m.section(form.GridSection, 'device', _('Devices')); + s.addremove = true; + s.anonymous = true; + s.addbtntitle = _('Add device configuration…'); + + s.cfgsections = function() { + var sections = uci.sections('network', 'device'), + section_ids = sections.sort(function(a, b) { return L.naturalCompare(a.name, b.name) }).map(function(s) { return s['.name'] }); + + for (var i = 0; i < netDevs.length; i++) { + if (sections.filter(function(s) { return s.name == netDevs[i].getName() }).length) + continue; + + if (netDevs[i].getType() == 'wifi' && !netDevs[i].isUp()) + continue; + + /* Unless http://lists.openwrt.org/pipermail/openwrt-devel/2020-July/030397.html is implemented, + we cannot properly redefine bridges as devices, so filter them away for now... */ + + var m = netDevs[i].isBridge() ? netDevs[i].getName().match(/^br-([A-Za-z0-9_]+)$/) : null, + s = m ? uci.get('network', m[1]) : null; + + if (s && s['.type'] == 'interface' && s.type == 'bridge') + continue; + + section_ids.push('dev:%s'.format(netDevs[i].getName())); + } + + return section_ids; + }; + + s.renderMoreOptionsModal = function(section_id, ev) { + var m = section_id.match(/^dev:(.+)$/); + + if (m) { + var devtype = getDevType(section_id); + + section_id = uci.add('network', 'device'); + + uci.set('network', section_id, 'name', m[1]); + uci.set('network', section_id, 'type', (devtype != 'ethernet') ? devtype : null); + + this.addedSection = section_id; + } + + return this.super('renderMoreOptionsModal', [section_id, ev]); + }; + + s.renderRowActions = function(section_id) { + var trEl = this.super('renderRowActions', [ section_id, _('Configure…') ]), + deleteBtn = trEl.querySelector('button:last-child'); + + deleteBtn.firstChild.data = _('Unconfigure'); + deleteBtn.setAttribute('title', _('Remove related device settings from the configuration')); + deleteBtn.disabled = section_id.match(/^dev:/) ? true : null; + + return trEl; + }; + + s.modaltitle = function(section_id) { + var m = section_id.match(/^dev:(.+)$/), + name = m ? m[1] : uci.get('network', section_id, 'name'); + + return name ? '%s: %q'.format(getDevTypeDesc(section_id), name) : _('Add device configuration'); + }; + + s.addModalOptions = function(s) { + var isNew = (uci.get('network', s.section, 'name') == null), + dev = getDevice(s.section); + + nettools.addDeviceOptions(s, dev, isNew); + }; + + s.handleModalCancel = function(map /*, ... */) { + var name = uci.get('network', this.addedSection, 'name') + + uci.sections('network', 'bridge-vlan', function(bvs) { + if (name != null && bvs.device == name) + uci.remove('network', bvs['.name']); + }); + + if (map.addedVLANs) + for (var i = 0; i < map.addedVLANs.length; i++) + uci.remove('network', map.addedVLANs[i]); + + if (this.addedSection) + uci.remove('network', this.addedSection); + + return form.GridSection.prototype.handleModalCancel.apply(this, arguments); + }; + + s.handleRemove = function(section_id /*, ... */) { + var name = uci.get('network', section_id, 'name'), + type = uci.get('network', section_id, 'type'); + + if (name != null && type == 'bridge') { + uci.sections('network', 'bridge-vlan', function(bvs) { + if (bvs.device == name) + uci.remove('network', bvs['.name']); + }); + } + + return form.GridSection.prototype.handleRemove.apply(this, arguments); + }; + + function getDevice(section_id) { + var m = section_id.match(/^dev:(.+)$/), + name = m ? m[1] : uci.get('network', section_id, 'name'); + + return netDevs.filter(function(d) { return d.getName() == name })[0]; + } + + function getDevType(section_id) { + var dev = getDevice(section_id), + cfg = uci.get('network', section_id), + type = cfg ? (uci.get('network', section_id, 'type') || 'ethernet') : (dev ? dev.getType() : ''); + + switch (type) { + case '': + return null; + + case 'vlan': + case '8021q': + return '8021q'; + + case '8021ad': + return '8021ad'; + + case 'bonding': + return 'bonding'; + + case 'bridge': + return 'bridge'; + + case 'tunnel': + return 'tunnel'; + + case 'macvlan': + return 'macvlan'; + + case 'veth': + return 'veth'; + + case 'wifi': + case 'alias': + case 'switch': + case 'ethernet': + default: + return 'ethernet'; + } + } + + function getDevTypeDesc(section_id) { + switch (getDevType(section_id) || '') { + case '': + return E('em', [ _('Device not present') ]); + + case '8021q': + return _('VLAN (802.1q)'); + + case '8021ad': + return _('VLAN (802.1ad)'); + + case 'bonding': + return _('Aggregation device'); + + case 'bridge': + return _('Bridge device'); + + case 'tunnel': + return _('Tunnel device'); + + case 'macvlan': + return _('MAC VLAN'); + + case 'veth': + return _('Virtual Ethernet'); + + default: + return _('Network device'); + } + } + + o = s.option(form.DummyValue, 'name', _('Device')); + o.modalonly = false; + o.textvalue = function(section_id) { + var dev = getDevice(section_id), + ext = section_id.match(/^dev:/), + icon = render_iface(dev); + + if (ext) + icon.querySelector('img').style.opacity = '.5'; + + return E('span', { 'class': 'ifacebadge' }, [ + icon, + E('span', { 'style': ext ? 'opacity:.5' : null }, [ + dev ? dev.getName() : (uci.get('network', section_id, 'name') || '?') + ]) + ]); + }; + + o = s.option(form.DummyValue, 'type', _('Type')); + o.textvalue = getDevTypeDesc; + o.modalonly = false; + + o = s.option(form.DummyValue, 'macaddr', _('MAC Address')); + o.modalonly = false; + o.textvalue = function(section_id) { + var dev = getDevice(section_id), + val = uci.get('network', section_id, 'macaddr'), + mac = dev ? dev.getMAC() : null; + + return val ? E('strong', { + 'data-tooltip': _('The value is overridden by configuration.') + }, [ val.toUpperCase() ]) : (mac || '-'); + }; + + o = s.option(form.DummyValue, 'mtu', _('MTU')); + o.modalonly = false; + o.textvalue = function(section_id) { + var dev = getDevice(section_id), + val = uci.get('network', section_id, 'mtu'), + mtu = dev ? dev.getMTU() : null; + + return val ? E('strong', { + 'data-tooltip': _('The value is overridden by configuration.') + }, [ val ]) : (mtu || '-').toString(); + }; + s = m.section(form.TypedSection, 'globals', _('Global network options')); s.addremove = false; s.anonymous = true; - o = s.option(form.Value, 'ula_prefix', _('IPv6 ULA-Prefix')); + o = s.option(form.Value, 'ula_prefix', _('IPv6 ULA-Prefix'), + _('Unique Local Address (%s) - prefix fd00::/8 (the L bit is always 1).').format('RFC4193').format('https://datatracker.ietf.org/doc/html/rfc4193#section-3') + ' ' + + _('ULA for IPv6 is analogous to IPv4 private network addressing.') + ' ' + + _('This prefix is randomly generated at first install.')); o.datatype = 'cidr6'; - o = s.option(form.Flag, 'packet_steering', _('Packet Steering'), _('Enable packet steering across all CPUs. May help or hinder network speed.')); + o = s.option(form.ListValue, 'packet_steering', _('Packet Steering'), _('Enable packet steering across CPUs. May help or hinder network speed.')); + o.value('0', _('Disabled')); + o.value('1',_('Enabled')); + o.value('2',_('Enabled (all CPUs)')); + o.default = '1'; o.optional = true; + var steer_flow = uci.get('network', 'globals', 'steering_flows'); + + o = s.option(form.Value, 'steering_flows', _('Steering flows (RPS)'), + _('Directs packet flows to specific CPUs where the local socket owner listens (the local service).') + ' ' + + _('Note: this setting is for local services on the device only (not for forwarding).')); + o.value('', _('Standard: none')); + o.value('128', _('Suggested: 128')); + o.value('256', _('256')); + o.depends('packet_steering', '1'); + o.depends('packet_steering', '2'); + o.datatype = 'uinteger'; + o.default = steer_flow; if (dslModemType != null) { s = m.section(form.TypedSection, 'dsl', _('DSL')); s.anonymous = true; o = s.option(form.ListValue, 'annex', _('Annex')); - o.value('a', _('Annex A + L + M (all)')); - o.value('b', _('Annex B (all)')); - o.value('j', _('Annex J (all)')); - o.value('m', _('Annex M (all)')); - o.value('bdmt', _('Annex B G.992.1')); - o.value('b2', _('Annex B G.992.3')); - o.value('b2p', _('Annex B G.992.5')); + if (dslModemType == 'vdsl') { + o.value('a', _('ADSL (all variants) Annex A/L/M + VDSL2 Annex A/B/C')); + o.value('b', _('ADSL (all variants) Annex B + VDSL2 Annex A/B/C')); + o.value('j', _('ADSL (all variants) Annex B/J + VDSL2 Annex A/B/C')); + } else { + o.value('a', _('ADSL (all variants) Annex A/L/M')); + o.value('b', _('ADSL (all variants) Annex B')); + o.value('j', _('ADSL (all variants) Annex B/J')); + } + o.value('m', _('ADSL (all variants) Annex M')); o.value('at1', _('ANSI T1.413')); - o.value('admt', _('Annex A G.992.1')); - o.value('alite', _('Annex A G.992.2')); - o.value('a2', _('Annex A G.992.3')); - o.value('a2p', _('Annex A G.992.5')); - o.value('l', _('Annex L G.992.3 POTS 1')); - o.value('m2', _('Annex M G.992.3')); - o.value('m2p', _('Annex M G.992.5')); + o.value('admt', _('ADSL (G.992.1) Annex A')); + o.value('bdmt', _('ADSL (G.992.1) Annex B')); + o.value('alite', _('Splitterless ADSL (G.992.2) Annex A')); + o.value('a2', _('ADSL2 (G.992.3) Annex A')); + o.value('b2', _('ADSL2 (G.992.3) Annex B')); + o.value('l', _('ADSL2 (G.992.3) Annex L')); + o.value('m2', _('ADSL2 (G.992.3) Annex M')); + o.value('a2p', _('ADSL2+ (G.992.5) Annex A')); + o.value('b2p', _('ADSL2+ (G.992.5) Annex B')); + o.value('m2p', _('ADSL2+ (G.992.5) Annex M')); o = s.option(form.ListValue, 'tone', _('Tone')); o.value('', _('auto')); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js b/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js index b218daac3..312b53007 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js @@ -1,63 +1,54 @@ 'use strict'; 'require view'; +'require fs'; +'require uci'; 'require form'; 'require network'; 'require tools.widgets as widgets'; +'require tools.network as tn'; return view.extend({ load: function() { - return network.getDevices(); + return Promise.all([ + network.getDevices(), + fs.lines('/etc/iproute2/rt_tables') + ]); }, - render: function(netdevs) { - var m, s, o; + render: function(data) { + var netDevs = data[0], + m, s, o; - m = new form.Map('network', _('Routes'), _('Routes specify over which interface and gateway a certain host or network can be reached.')); + var rtTables = data[1].map(function(l) { + var m = l.trim().match(/^(\d+)\s+(\S+)$/); + return m ? [ +m[1], m[2] ] : null; + }).filter(function(e) { + return e && e[0] > 0; + }); + + m = new form.Map('network', _('Routing'), _('Routing defines over which interface and gateway a certain host or network can be reached.') + + '
    ' + _('Routes go in routing tables and define the specific path to reach destinations.') + + '
    ' + _('Rules determine which routing table to use, based on conditions like source address or interface.')); m.tabbed = true; - for (var i = 4; i <= 6; i += 2) { - s = m.section(form.GridSection, (i == 4) ? 'route' : 'route6', (i == 4) ? _('Static IPv4 Routes') : _('Static IPv6 Routes')); + for (var family = 4; family <= 6; family += 2) { + s = m.section(form.GridSection, (family == 6) ? 'route6' : 'route', (family == 6) ? _('Static IPv6 Routes') : _('Static IPv4 Routes')); s.anonymous = true; s.addremove = true; s.sortable = true; + s.cloneable = true; + s.nodescriptions = true; s.tab('general', _('General Settings')); s.tab('advanced', _('Advanced Settings')); - o = s.taboption('general', widgets.NetworkSelect, 'interface', _('Interface')); - o.rmempty = false; + o = s.taboption('general', widgets.NetworkSelect, 'interface', _('Interface'), _('Specifies the logical interface name of the parent (or master) interface this route belongs to')); + o.loopback = true; o.nocreate = true; - - o = s.taboption('general', form.Value, 'target', _('Target'), (i == 4) ? _('Host-IP or Network') : _('IPv6-Address or Network (CIDR)')); - o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr'; - o.rmempty = false; - - if (i == 4) { - o = s.taboption('general', form.Value, 'netmask', _('IPv4-Netmask'), _('if target is a network')); - o.placeholder = '255.255.255.255'; - o.datatype = 'ip4addr'; - o.rmempty = true; - } - - o = s.taboption('general', form.Value, 'gateway', (i == 4) ? _('IPv4-Gateway') : _('IPv6-Gateway')); - o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr'; o.rmempty = true; - o = s.taboption('advanced', form.Value, 'metric', _('Metric')); - o.placeholder = 0; - o.datatype = (i == 4) ? 'range(0,255)' : 'range(0,65535)'; - o.rmempty = true; - o.textvalue = function(section_id) { - return this.cfgvalue(section_id) || 0; - }; - - o = s.taboption('advanced', form.Value, 'mtu', _('MTU')); - o.placeholder = 1500; - o.datatype = 'range(64,9000)'; - o.rmempty = true; + o = s.taboption('general', form.ListValue, 'type', _('Route type'), _('Specifies the route type to be created')); o.modalonly = true; - - o = s.taboption('advanced', form.ListValue, 'type', _('Route type')); o.value('', 'unicast'); o.value('local'); o.value('broadcast'); @@ -66,36 +57,168 @@ return view.extend({ o.value('prohibit'); o.value('blackhole'); o.value('anycast'); - o.default = ''; - o.rmempty = true; - o.modalonly = true; + o.value('throw'); - o = s.taboption('advanced', form.Value, 'table', _('Route table')); - o.value('local', 'local (255)'); - o.value('main', 'main (254)'); - o.value('default', 'default (253)'); - o.rmempty = true; - o.modalonly = true; + o = s.taboption('general', form.Value, 'target', _('Target'), _('Network address')); + o.rmempty = false; + o.datatype = (family == 6) ? 'cidr6' : 'cidr4'; + o.placeholder = (family == 6) ? '::/0' : '0.0.0.0/0'; o.cfgvalue = function(section_id) { - var cfgvalue = this.map.data.get('network', section_id, 'table'); - return cfgvalue || 'main'; + var section_type = uci.get('network', section_id, '.type'), + target = uci.get('network', section_id, 'target'), + mask = uci.get('network', section_id, 'netmask'), + v6 = (section_type == 'route6') ? true : false, + bits = mask ? network.maskToPrefix(mask, v6) : (v6 ? 128 : 32); + if (target) { + return target.split('/')[1] ? target : target + '/' + bits; + } + } + o.write = function(section_id, formvalue) { + uci.set('network', section_id, 'target', formvalue); + uci.unset('network', section_id, 'netmask'); + } + + o = s.taboption('general', form.Value, 'gateway', _('Gateway'), _('Specifies the network gateway. If omitted, the gateway from the parent interface is taken if any, otherwise creates a link scope route. If set to 0.0.0.0 no gateway will be specified for the route')); + o.datatype = (family == 6) ? 'ip6addr("nomask")' : 'ip4addr("nomask")'; + o.placeholder = (family == 6) ? 'fe80::1' : '192.168.0.1'; + + o = s.taboption('advanced', form.Value, 'metric', _('Metric'), _('Ordinal: routes with the lowest metric match first')); + o.datatype = 'uinteger'; + o.placeholder = 0; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('auto')); }; - o = s.taboption('advanced', form.Value, 'source', _('Source Address')); - o.placeholder = E('em', _('automatic')); - for (var j = 0; j < netdevs.length; j++) { - var addrs = netdevs[j].getIPAddrs(); - for (var k = 0; k < addrs.length; k++) - o.value(addrs[k].split('/')[0]); - } - o.datatype = (i == 4) ? 'ip4addr' : 'ip6addr'; - o.default = ''; - o.rmempty = true; + o = s.taboption('advanced', form.Value, 'mtu', _('MTU'), _('Packets exceeding this value may be fragmented')); o.modalonly = true; + o.datatype = 'and(uinteger,range(64,9000))'; + o.placeholder = 1500; - o = s.taboption('advanced', form.Flag, 'onlink', _('On-Link route')); + o = s.taboption('advanced', form.Value, 'table', _('Table'), _('Routing table into which to insert this rule.') + '
    ' + + _('A numeric table index, or symbol alias declared in %s. Special aliases local (255), main (254) and default (253) are also valid').format('/etc/iproute2/rt_tables') + + '
    ' + _('Only interfaces using this table (via override) will use this route.')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('auto')); + }; + + o = s.taboption('advanced', form.Value, 'source', _('Source'), _('Specifies the preferred source address when sending to destinations covered by the target') + + '
    ' + _('This is only used if no default route matches the destination gateway')); + o.modalonly = true; + o.datatype = (family == 6) ? 'ip6addr' : 'ip4addr'; + for (var i = 0; i < netDevs.length; i++) { + var addrs = (family == 6) ? netDevs[i].getIP6Addrs() : netDevs[i].getIPAddrs(); + for (var j = 0; j < addrs.length; j++) + o.value(addrs[j].split('/')[0]); + } + + o = s.taboption('advanced', form.Flag, 'onlink', _('On-link'), _('When enabled, gateway is on-link even if the gateway does not match any interface prefix')); + o.modalonly = true; + o.default = o.disabled; + + o = s.taboption('advanced', form.Flag, 'disabled', _('Disable')); + o.modalonly = false; + o.editable = true; + o.default = o.disabled; + } + + for (var family = 4; family <= 6; family += 2) { + s = m.section(form.GridSection, (family == 6) ? 'rule6' : 'rule', (family == 6) ? _('IPv6 Rules') : _('IPv4 Rules')); + s.anonymous = true; + s.addremove = true; + s.sortable = true; + s.cloneable = true; + s.nodescriptions = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', form.Value, 'priority', _('Priority'), _('Execution order of this IP rule: lower numbers go first')); + o.datatype = 'uinteger'; + o.placeholder = 30000; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('auto')); + }; + + o = s.taboption('general', form.ListValue, 'action', _('Rule type'), _('Specifies the rule target routing action')); + o.modalonly = true; + o.value('', 'unicast'); + o.value('unreachable'); + o.value('prohibit'); + o.value('blackhole'); + o.value('throw'); + + o = s.taboption('general', widgets.NetworkSelect, 'in', _('Incoming interface'), _('Match traffic from this interface')); + o.loopback = true; + o.nocreate = true; + + o = s.taboption('general', form.Value, 'src', _('Source'), _('Match traffic from this source subnet (CIDR notation)')); + o.datatype = (family == 6) ? 'cidr6' : 'cidr4'; + o.placeholder = (family == 6) ? '::/0' : '0.0.0.0/0'; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('any')); + }; + + o = s.taboption('general', form.Value, 'ipproto', _('IP Protocol'), _('Match traffic IP protocol type')); + o.datatype = 'range(0,255)'; + tn.protocols.forEach(function(p) { + o.value(p.i, p.d); + }); + + o = s.taboption('general', widgets.NetworkSelect, 'out', _('Outgoing interface'), _('Match traffic destined to this interface')); + o.loopback = true; + o.nocreate = true; + + o = s.taboption('general', form.Value, 'dest', _('Destination'), _('Match traffic destined to this subnet (CIDR notation)')); + o.datatype = (family == 6) ? 'cidr6' : 'cidr4'; + o.placeholder = (family == 6) ? '::/0' : '0.0.0.0/0'; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('any')); + }; + + o = s.taboption('advanced', form.Value, 'lookup', _('Table'), _('Routing table to use for traffic matching this rule.') + '
    ' + + _('A numeric table index, or symbol alias declared in %s. Special aliases local (255), main (254) and default (253) are also valid').format('/etc/iproute2/rt_tables') + + '
    ' + _('Matched traffic re-targets to an interface using this table.')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + + o = s.taboption('advanced', form.Value, 'goto', _('Jump to rule'), _('Jumps to another rule specified by its priority value')); + o.modalonly = true; + o.datatype = 'uinteger'; + o.placeholder = 80000; + + o = s.taboption('advanced', form.Value, 'mark', _('Firewall mark'), _('Specifies the fwmark and optionally its mask to match, e.g. 0xFF to match mark 255 or 0x0/0x1 to match any even mark value')); + o.modalonly = true; + o.datatype = 'string'; + o.placeholder = '0x1/0xf'; + + o = s.taboption('advanced', form.Value, 'tos', _('Type of service'), _('Specifies the TOS value to match in IP headers')); + o.modalonly = true; + o.datatype = 'uinteger'; + o.placeholder = 10; + + o = s.taboption('advanced', form.Value, 'uidrange', _('User identifier'), _('Specifies an individual UID or range of UIDs to match, e.g. 1000 to match corresponding UID or 1000-1005 to inclusively match all UIDs within the corresponding range')); + o.modalonly = true; + o.datatype = 'string'; + o.placeholder = '1000-1005'; + + o = s.taboption('advanced', form.Value, 'suppress_prefixlength', _('Prefix suppressor'), _('Reject routing decisions that have a prefix length less than or equal to the specified value') + + '
    ' + _('Prevents overly broad routes being considered. Setting 16 would consider /17, /24, /28 or more specific routes yet ignore /16, /8, /0 (default) routes')); + o.modalonly = true; + o.datatype = (family == 6) ? 'ip6prefix' : 'ip4prefix'; + o.placeholder = (family == 6) ? 64 : 24; + + o = s.taboption('advanced', form.Flag, 'invert', _('Invert match'), _('If set, the meaning of the match options is inverted')); + o.modalonly = true; + o.default = o.disabled; + + o = s.taboption('advanced', form.Flag, 'disabled', _('Disable')); + o.modalonly = false; + o.editable = true; o.default = o.disabled; - o.rmempty = true; } return m.render(); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js b/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js index 3133d2725..535a133e7 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js @@ -180,8 +180,10 @@ return view.extend({ s = m.section(form.NamedSection, sid, 'switch', switch_title); s.addremove = false; - if (feat.vlan_option) - s.option(form.Flag, feat.vlan_option, _('Enable VLAN functionality')); + if (feat.vlan_option) { + o = s.option(form.Flag, feat.vlan_option, _('Enable VLAN functionality')); + o.rmempty = false; + } if (feat.learning_option) { o = s.option(form.Flag, feat.learning_option, _('Enable learning and aging')); @@ -222,7 +224,7 @@ return view.extend({ s.filter = function(section_id) { var device = uci.get('network', section_id, 'device'); - return (device == switch_name); + return (device == this.device); }; s.cfgsections = function() { @@ -246,7 +248,7 @@ return view.extend({ max_vid = 0; for (var j = 0; j < sections.length; j++) { - if (sections[j].device != s.device) + if (sections[j].device != this.device) continue; var vlan = +sections[j].vlan, @@ -259,7 +261,7 @@ return view.extend({ max_vid = vid; } - uci.set('network', section_id, 'device', s.device); + uci.set('network', section_id, 'device', this.device); uci.set('network', section_id, 'vlan', max_vlan + 1); if (feat.vid_option) @@ -268,8 +270,6 @@ return view.extend({ return this.map.save(null, true); }; - var port_opts = []; - o = s.option(form.Value, feat.vid_option || 'vlan', 'VLAN ID'); o.rmempty = false; o.forcewrite = true; @@ -297,21 +297,23 @@ return view.extend({ return true; }; + var port_opts = o.port_opts = []; + o.write = function(section_id, value) { var topology = this.section.topology, values = []; - for (var i = 0; i < port_opts.length; i++) { - var tagging = port_opts[i].formvalue(section_id), + for (var i = 0; i < this.port_opts.length; i++) { + var tagging = this.port_opts[i].formvalue(section_id), portspec = Array.isArray(topology.ports) ? topology.ports[i] : null; if (tagging == 't') - values.push(port_opts[i].option + tagging); + values.push(this.port_opts[i].option + tagging); else if (tagging == 'u') - values.push(port_opts[i].option); + values.push(this.port_opts[i].option); if (portspec && portspec.device) { - var old_tag = port_opts[i].cfgvalue(section_id), + var old_tag = this.port_opts[i].cfgvalue(section_id), old_vid = this.cfgvalue(section_id); if (old_tag != tagging || old_vid != value) { diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js index d19b025e3..e76b2b711 100644 --- a/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -80,7 +80,7 @@ function render_signal_badge(signalPercent, signalValue, noiseValue, wrap, mode) } if (noiseValue != null && noiseValue != 0) { - value = '---/%d\x0a%s'.format(noiseValue, _('dBm')); + value = '---/%d\xa0%s'.format(noiseValue, _('dBm')); title = '%s / %s: %d %s'.format(title, _('Noise'), noiseValue, _('dBm')); } else { @@ -199,7 +199,11 @@ function format_wifirate(rate) { var s = '%.1f\xa0%s, %d\xa0%s'.format(rate.rate / 1000, _('Mbit/s'), rate.mhz, _('MHz')), ht = rate.ht, vht = rate.vht, mhz = rate.mhz, nss = rate.nss, - mcs = rate.mcs, sgi = rate.short_gi; + mcs = rate.mcs, sgi = rate.short_gi, + he = rate.he, he_gi = rate.he_gi, + he_dcm = rate.he_dcm, + eht = rate?.eht ?? false, eht_gi = rate?.eht_gi ?? 0, + eht_dcm = rate?.eht_dcm ?? 0; if (ht || vht) { if (vht) s += ', VHT-MCS\xa0%d'.format(mcs); @@ -208,6 +212,20 @@ function format_wifirate(rate) { if (sgi) s += ', ' + _('Short GI').replace(/ /g, '\xa0'); } + if (he) { + s += ', HE-MCS\xa0%d'.format(mcs); + if (nss) s += ', HE-NSS\xa0%d'.format(nss); + if (he_gi) s += ', HE-GI\xa0%d'.format(he_gi); + if (he_dcm) s += ', HE-DCM\xa0%d'.format(he_dcm); + } + + if (eht) { + s += ', EHT-MCS\xa0%d'.format(mcs); + if (nss) s += ', EHT-NSS\xa0%d'.format(nss); + if (eht_gi) s += ', EHT-GI\xa0%d'.format(eht_gi); + if (eht_dcm) s += ', EHT-DCM\xa0%d'.format(eht_dcm); + } + return s; } @@ -289,7 +307,9 @@ function add_dependency_permutations(o, deps) { o.depends(res[i]); } +// Define a class CBIWifiFrequencyValue that extends form.Value var CBIWifiFrequencyValue = form.Value.extend({ + // Declare an RPC method to get the frequency list for a given device callFrequencyList: rpc.declare({ object: 'iwinfo', method: 'freqlist', @@ -297,65 +317,114 @@ var CBIWifiFrequencyValue = form.Value.extend({ expect: { results: [] } }), + // Load method to fetch WiFi device details and frequency list load: function(section_id) { return Promise.all([ network.getWifiDevice(section_id), this.callFrequencyList(section_id) ]).then(L.bind(function(data) { this.channels = { - '11g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', true ] : [], - '11a': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', true ] : [] + '2g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', { available: true } ] : [], + '5g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', { available: true } ] : [], + '6g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', { available: true } ] : [], + '60g': [] }; - for (var i = 0; i < data[1].length; i++) - this.channels[(data[1][i].mhz > 2484) ? '11a' : '11g'].push( + for (var i = 0; i < data[1].length; i++) { + if (!data[1][i].band) + continue; + + var band = '%dg'.format(data[1][i].band), + available = true; + + + if (data[1][i].restricted && data[1][i].no_ir) + available = false; + + this.channels[band].push( data[1][i].channel, '%d (%d Mhz)'.format(data[1][i].channel, data[1][i].mhz), - !data[1][i].restricted + { + available: available, + no_outdoor: data[1][i].no_outdoor + } + ); + } var hwmodelist = L.toArray(data[0] ? data[0].getHWModes() : null) .reduce(function(o, v) { o[v] = true; return o }, {}); + // Define supported modes this.modes = [ - '', 'Legacy', true, - 'n', 'N', hwmodelist.n, - 'ac', 'AC', hwmodelist.ac + '', 'Legacy', { available: hwmodelist.a || hwmodelist.b || hwmodelist.g }, + 'n', 'N', { available: hwmodelist.n }, + 'ac', 'AC', { available: L.hasSystemFeature('hostapd', '11ac') && hwmodelist.ac }, + 'ax', 'AX', { available: L.hasSystemFeature('hostapd', '11ax') && hwmodelist.ax }, + 'be', 'BE', { available: L.hasSystemFeature('hostapd', '11be') && hwmodelist.be } ]; + // Create a list of HT modes based on device capabilities var htmodelist = L.toArray(data[0] ? data[0].getHTModes() : null) .reduce(function(o, v) { o[v] = true; return o }, {}); this.htmodes = { - '': [ '', '-', true ], + '': [ '', '-', { available: true } ], 'n': [ - 'HT20', '20 MHz', htmodelist.HT20, - 'HT40', '40 MHz', htmodelist.HT40 + 'HT20', '20 MHz', { available: htmodelist.HT20 }, + 'HT40', '40 MHz', { available: htmodelist.HT40 } ], 'ac': [ - 'VHT20', '20 MHz', htmodelist.VHT20, - 'VHT40', '40 MHz', htmodelist.VHT40, - 'VHT80', '80 MHz', htmodelist.VHT80, - 'VHT160', '160 MHz', htmodelist.VHT160 + 'VHT20', '20 MHz', { available: htmodelist.VHT20 }, + 'VHT40', '40 MHz', { available: htmodelist.VHT40 }, + 'VHT80', '80 MHz', { available: htmodelist.VHT80 }, + 'VHT160', '160 MHz', { available: htmodelist.VHT160 } + ], + 'ax': [ + 'HE20', '20 MHz', { available: htmodelist.HE20 }, + 'HE40', '40 MHz', { available: htmodelist.HE40 }, + 'HE80', '80 MHz', { available: htmodelist.HE80 }, + 'HE160', '160 MHz', { available: htmodelist.HE160 } + ], + 'be': [ + 'EHT20', '20 MHz', { available: htmodelist.EHT20 }, + 'EHT40', '40 MHz', { available: htmodelist.EHT40 }, + 'EHT80', '80 MHz', { available: htmodelist.EHT80 }, + 'EHT160', '160 MHz', { available: htmodelist.EHT160 }, + 'EHT320', '320 MHz', { available: htmodelist.EHT320 } ] }; + // Define available bands for widget selection based on channel availability + // AX and BE are available on 2/5/6G bands this.bands = { '': [ - '11g', '2.4 GHz', this.channels['11g'].length > 3, - '11a', '5 GHz', this.channels['11a'].length > 3 + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 }, + '60g', '60 GHz', { available: this.channels['60g'].length > 0 } ], 'n': [ - '11g', '2.4 GHz', this.channels['11g'].length > 3, - '11a', '5 GHz', this.channels['11a'].length > 3 + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 } ], 'ac': [ - '11a', '5 GHz', true + '5g', '5 GHz', { available: true } + ], + 'ax': [ + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 }, + '6g', '6 GHz', { available: this.channels['6g'].length > 3 } + ], + 'be': [ + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 }, + '6g', '6 GHz', { available: this.channels['6g'].length > 3 } ] }; }, this)); }, + // Set values in the select element setValues: function(sel, vals) { if (sel.vals) sel.vals.selected = sel.selectedIndex; @@ -364,7 +433,7 @@ var CBIWifiFrequencyValue = form.Value.extend({ sel.remove(0); for (var i = 0; vals && i < vals.length; i += 3) - if (vals[i+2]) + if (vals[i+2] && vals[i+2].available) sel.add(E('option', { value: vals[i+0] }, [ vals[i+1] ])); if (vals && !isNaN(vals.selected)) @@ -392,6 +461,25 @@ var CBIWifiFrequencyValue = form.Value.extend({ this.setValues(band, this.bands[mode.value]); this.toggleWifiChannel(elem); + + this.map.checkDepends(); + }, + + checkWifiChannelRestriction: function(elem) { + var band = elem.querySelector('.band'), + chan = elem.querySelector('.channel'), + restricted_chan = elem.querySelector('.restricted_channel'), + channels = this.channels[band.value], + no_outdoor; + + if (chan.selectedIndex < 0) + return; + + no_outdoor = channels[(chan.selectedIndex*3)+2].no_outdoor; + if (no_outdoor) + restricted_chan.style.display = ''; + else + restricted_chan.style.display = 'none'; }, toggleWifiChannel: function(elem) { @@ -399,6 +487,9 @@ var CBIWifiFrequencyValue = form.Value.extend({ var chan = elem.querySelector('.channel'); this.setValues(chan, this.channels[band.value]); + + this.map.checkDepends(); + this.checkWifiChannelRestriction(elem); }, setInitialValues: function(section_id, elem) { @@ -408,11 +499,17 @@ var CBIWifiFrequencyValue = form.Value.extend({ bwdt = elem.querySelector('.htmode'), htval = uci.get('wireless', section_id, 'htmode'), hwval = uci.get('wireless', section_id, 'hwmode'), - chval = uci.get('wireless', section_id, 'channel'); + chval = uci.get('wireless', section_id, 'channel'), + bandval = uci.get('wireless', section_id, 'band'); this.setValues(mode, this.modes); - if (/VHT20|VHT40|VHT80|VHT160/.test(htval)) + // Determine mode based on htmode value + if (/EHT20|EHT40|EHT80|EHT160|EHT320/.test(htval)) + mode.value = 'be'; + else if (/HE20|HE40|HE80|HE160/.test(htval)) + mode.value = 'ax'; + else if (/VHT20|VHT40|VHT80|VHT160/.test(htval)) mode.value = 'ac'; else if (/HT20|HT40/.test(htval)) mode.value = 'n'; @@ -421,15 +518,26 @@ var CBIWifiFrequencyValue = form.Value.extend({ this.toggleWifiMode(elem); - if (/a/.test(hwval)) - band.value = '11a'; - else - band.value = '11g'; + if (hwval != null) { + this.useBandOption = false; + + if (/a/.test(hwval)) + band.value = '5g'; + else + band.value = '2g'; + } + else { + this.useBandOption = true; + + band.value = bandval; + } this.toggleWifiBand(elem); bwdt.value = htval; - chan.value = chval; + chan.value = chval || (chan.options[0] ? chan.options[0].value : 'auto'); + + this.checkWifiChannelRestriction(elem); return elem; }, @@ -438,6 +546,9 @@ var CBIWifiFrequencyValue = form.Value.extend({ var elem = E('div'); dom.content(elem, [ + E('div', { 'class' : 'restricted_channel', 'style': 'display:none'}, [ + E('div', {'class': 'cbi-button alert-message warning disabled'}, _('Indoor Only Channel Selected')) + ]), E('label', { 'style': 'float:left; margin-right:3px' }, [ _('Mode'), E('br'), E('select', { @@ -461,6 +572,7 @@ var CBIWifiFrequencyValue = form.Value.extend({ E('select', { 'class': 'channel', 'style': 'width:auto', + 'change': L.bind(this.toggleWifiChannel, this, elem), 'disabled': (this.disabled != null) ? this.disabled : this.map.readonly }) ]), @@ -469,6 +581,7 @@ var CBIWifiFrequencyValue = form.Value.extend({ E('select', { 'class': 'htmode', 'style': 'width:auto', + 'change': L.bind(this.map.checkDepends, this.map), 'disabled': (this.disabled != null) ? this.disabled : this.map.readonly }) ]), @@ -481,7 +594,7 @@ var CBIWifiFrequencyValue = form.Value.extend({ cfgvalue: function(section_id) { return [ uci.get('wireless', section_id, 'htmode'), - uci.get('wireless', section_id, 'hwmode'), + uci.get('wireless', section_id, 'hwmode') || uci.get('wireless', section_id, 'band'), uci.get('wireless', section_id, 'channel') ]; }, @@ -498,7 +611,12 @@ var CBIWifiFrequencyValue = form.Value.extend({ write: function(section_id, value) { uci.set('wireless', section_id, 'htmode', value[0] || null); - uci.set('wireless', section_id, 'hwmode', value[1]); + + if (this.useBandOption) + uci.set('wireless', section_id, 'band', value[1]); + else + uci.set('wireless', section_id, 'hwmode', (value[1] == '2g') ? '11g' : '11a'); + uci.set('wireless', section_id, 'channel', value[2]); } }); @@ -647,6 +765,25 @@ return view.extend({ ]) ]; + var zones = data[4]; + if (bss.vlan) { + var desc = bss.vlan.getI18n(); + var vlan_network = bss.vlan.getNetwork(); + var vlan_zone; + + if (vlan_network && zones) + for (let zone of zones) + if (zone.getNetworks().includes(vlan_network)) + vlan_zone = zone; + + row[0].insertBefore( + E('div', { + 'class' : 'zonebadge', + 'title' : desc, + 'style' : firewall.getZoneColorStyle(vlan_zone) + }, [ desc ]), row[0].firstChild); + } + if (bss.network.isClientDisconnectSupported()) { if (table.firstElementChild.childNodes.length < 6) table.firstElementChild.appendChild(E('th', { 'class': 'th cbi-section-actions'})); @@ -684,7 +821,9 @@ return view.extend({ load: function() { return Promise.all([ uci.changes(), - uci.load('wireless') + uci.load('wireless'), + uci.load('system'), + firewall.getZones(), ]); }, @@ -704,11 +843,11 @@ return view.extend({ params: [ 'config', 'section', 'name' ] }), - render: function() { + render: function(data) { if (this.checkAnonymousSections()) return this.renderMigration(); else - return this.renderOverview(); + return this.renderOverview(data[3]); }, handleMigration: function(ev) { @@ -743,7 +882,7 @@ return view.extend({ ]); }, - renderOverview: function() { + renderOverview: function(zones) { var m, s, o; m = new form.Map('wireless'); @@ -879,14 +1018,17 @@ return view.extend({ o.inputtitle = isDisabled ? _('Enable') : _('Disable'); o.onclick = ui.createHandlerFn(s, network_updown, s.section, s.map); - o = ss.taboption('general', CBIWifiFrequencyValue, '_freq', '
    ' + _('Operating frequency')); + o = ss.taboption('general', CBIWifiFrequencyValue, '_freq', '
    ' + _('Operating frequency'), _('Some channels may be restricted to Indoor Only use by your Regulatory Domain. Make sure to follow this advice if a channel is reported as such.')); o.ucisection = s.section; if (hwtype == 'mac80211') { + o = ss.taboption('general', form.Flag, 'legacy_rates', _('Allow legacy 802.11b rates'), _('Legacy or badly behaving devices may require legacy 802.11b rates to interoperate. Airtime efficiency may be significantly reduced where these are used. It is recommended to not allow 802.11b rates where possible.')); + o.depends({'_freq': '2g', '!contains': true}); + o = ss.taboption('general', CBIWifiTxPowerValue, 'txpower', _('Maximum transmit power'), _('Specifies the maximum transmit power the wireless radio may use. Depending on regulatory requirements and wireless usage, the actual transmit power may be reduced by the driver.')); o.wifiNetwork = radioNet; - o = ss.taboption('advanced', CBIWifiCountryValue, 'country', _('Country Code')); + o = ss.taboption('general', CBIWifiCountryValue, 'country', _('Country Code')); o.wifiNetwork = radioNet; o = ss.taboption('advanced', form.ListValue, 'cell_density', _('Coverage cell density'), _('Configures data rates based on the coverage cell density. Normal configures basic rates to 6, 12, 24 Mbps if legacy 802.11b rates are not used else to 5.5, 11 Mbps. High configures basic rates to 12, 24 Mbps if legacy 802.11b rates are not used else to the 11 Mbps rate. Very High configures 24 Mbps as the basic rate. Supported rates lower than the minimum basic rate are not offered.')); @@ -895,10 +1037,7 @@ return view.extend({ o.value('2', _('High')); o.value('3', _('Very High')); - o = ss.taboption('advanced', form.Flag, 'legacy_rates', _('Allow legacy 802.11b rates')); - o.default = o.enabled; - - o = ss.taboption('advanced', form.Value, 'distance', _('Distance Optimization'), _('Distance to farthest network member in meters.')); + o = ss.taboption('advanced', form.Value, 'distance', _('Distance Optimization'), _('Distance to farthest network member in meters. Set only for distances above one kilometer; otherwise it is harmful.')); o.datatype = 'or(range(0,114750),"auto")'; o.placeholder = 'auto'; @@ -928,6 +1067,7 @@ return view.extend({ ss.tab('encryption', _('Wireless Security')); ss.tab('macfilter', _('MAC-Filter')); ss.tab('advanced', _('Advanced Settings')); + ss.tab('roaming', _('WLAN roaming'), _('Settings for assisting wireless clients in roaming between multiple APs: 802.11r, 802.11k and 802.11v')); o = ss.taboption('general', form.ListValue, 'mode', _('Mode')); o.value('ap', _('Access Point')); @@ -983,8 +1123,17 @@ return view.extend({ return net || network.addNetwork(name, { proto: 'none' }); }, this, values[i])).then(L.bind(function(dev, net) { if (net) { - if (!net.isEmpty()) - net.set('type', 'bridge'); + if (!net.isEmpty()) { + var target_dev = net.getDevice(); + + /* Resolve parent interface of vlan */ + while (target_dev && target_dev.getType() == 'vlan') + target_dev = target_dev.getParent(); + + if (!target_dev || target_dev.getType() != 'bridge') + net.set('type', 'bridge'); + } + net.addDevice(dev); } }, this, dev))); @@ -1014,7 +1163,7 @@ return view.extend({ bssid.depends('mode', 'sta'); bssid.depends('mode', 'sta-wds'); - o = ss.taboption('macfilter', form.ListValue, 'macfilter', _('MAC-Address Filter')); + o = ss.taboption('macfilter', form.ListValue, 'macfilter', _('MAC Address Filter')); o.depends('mode', 'ap'); o.depends('mode', 'ap-wds'); o.value('', _('disable')); @@ -1023,6 +1172,7 @@ return view.extend({ o = ss.taboption('macfilter', form.DynamicList, 'maclist', _('MAC-List')); o.datatype = 'macaddr'; + o.retain = true; o.depends('macfilter', 'allow'); o.depends('macfilter', 'deny'); o.load = function(section_id) { @@ -1069,25 +1219,39 @@ return view.extend({ return mode; }; - o = ss.taboption('general', form.Flag, 'hidden', _('Hide ESSID')); + o = ss.taboption('general', form.Flag, 'hidden', _('Hide ESSID'), _('Where the ESSID is hidden, clients may fail to roam and airtime efficiency may be significantly reduced.')); o.depends('mode', 'ap'); o.depends('mode', 'ap-wds'); - o = ss.taboption('general', form.Flag, 'wmm', _('WMM Mode')); + o = ss.taboption('general', form.Flag, 'wmm', _('WMM Mode'), _('Where Wi-Fi Multimedia (WMM) Mode QoS is disabled, clients may be limited to 802.11a/802.11g rates.')); o.depends('mode', 'ap'); o.depends('mode', 'ap-wds'); o.default = o.enabled; + /* https://w1.fi/cgit/hostap/commit/?id=34f7c699a6bcb5c45f82ceb6743354ad79296078 */ + /* multicast_to_unicast https://github.com/openwrt/openwrt/commit/7babb978ad9d7fc29acb1ff86afb1eb343af303a */ + o = ss.taboption('advanced', form.Flag, 'multicast_to_unicast_all', _('Multi To Unicast'), _('ARP, IPv4 and IPv6 (even 802.1Q) with multicast destination MACs are unicast to the STA MAC address. Note: This is not Directed Multicast Service (DMS) in 802.11v. Note: might break receiver STA multicast expectations.')); + o.rmempty = true; + o = ss.taboption('advanced', form.Flag, 'isolate', _('Isolate Clients'), _('Prevents client-to-client communication')); o.depends('mode', 'ap'); o.depends('mode', 'ap-wds'); + o = ss.taboption('advanced', form.Flag, 'bridge_isolate', _('Isolate Bridge Port'), _('Prevents communication only with targets on isolated bridge ports (while allowing it with targets on non-isolated ones). This also prevents client-to-client communication on the same interface when the WiFi device is in AP mode.')); + o = ss.taboption('advanced', form.Value, 'ifname', _('Interface name'), _('Override default interface name')); o.optional = true; + o.datatype = 'netdevname'; o.placeholder = radioNet.getIfname(); if (/^radio\d+\.network/.test(o.placeholder)) o.placeholder = ''; + var macaddr = uci.get('wireless', radioNet.getName(), 'macaddr'); + o = ss.taboption('advanced', form.Value, 'macaddr', _('MAC address'), _('Override default MAC address - the range of usable addresses might be limited by the driver')); + o.value('', _('driver default (%s)').format(!macaddr ? radioNet.getActiveBSSID() : _('no override'))); + o.value('random', _('randomly generated')); + o.datatype = "or('random',macaddr)"; + o = ss.taboption('advanced', form.Flag, 'short_preamble', _('Short Preamble')); o.default = o.enabled; @@ -1105,7 +1269,7 @@ return view.extend({ o.optional = true; o.datatype = 'uinteger'; - o = ss.taboption('advanced', form.Value, 'max_inactivity', _('Station inactivity limit'), _('sec')); + o = ss.taboption('advanced', form.Value, 'max_inactivity', _('Station inactivity limit'), _('802.11v: BSS Max Idle. Units: seconds.')); o.optional = true; o.placeholder = 300; o.datatype = 'uinteger'; @@ -1142,10 +1306,10 @@ return view.extend({ var e = this.section.children.filter(function(o) { return o.option == 'encryption' })[0].formvalue(section_id), co = this.section.children.filter(function(o) { return o.option == 'cipher' })[0], c = co.formvalue(section_id); - if (value == 'wpa' || value == 'wpa2' || value == 'wpa3' || value == 'wpa3-mixed') + if (value == 'wpa' || value == 'wpa2' || value == 'wpa3' || value == 'wpa3-mixed' || value == 'wpa3-192') uci.unset('wireless', section_id, 'key'); - if (co.isActive(section_id) && e && (c == 'tkip' || c == 'ccmp' || c == 'tkip+ccmp')) + if (co.isActive(section_id) && e && (c == 'tkip' || c == 'ccmp' || c == 'ccmp256' || c == 'gcmp' || c == 'gcmp256' || c == 'tkip+ccmp')) e += '+' + c; uci.set('wireless', section_id, 'encryption', e); @@ -1156,12 +1320,16 @@ return view.extend({ o.depends('encryption', 'wpa2'); o.depends('encryption', 'wpa3'); o.depends('encryption', 'wpa3-mixed'); + o.depends('encryption', 'wpa3-192'); o.depends('encryption', 'psk'); o.depends('encryption', 'psk2'); o.depends('encryption', 'wpa-mixed'); o.depends('encryption', 'psk-mixed'); o.value('auto', _('auto')); o.value('ccmp', _('Force CCMP (AES)')); + o.value('ccmp256', _('Force CCMP-256 (AES)')); + o.value('gcmp', _('Force GCMP (AES)')); + o.value('gcmp256', _('Force GCMP-256 (AES)')); o.value('tkip', _('Force TKIP')); o.value('tkip+ccmp', _('Force TKIP and CCMP (AES)')); o.write = ss.children.filter(function(o) { return o.option == 'encryption' })[0].write; @@ -1208,7 +1376,7 @@ return view.extend({ if (has_hostapd || has_supplicant) { crypto_modes.push(['psk2', 'WPA2-PSK', 35]); crypto_modes.push(['psk-mixed', 'WPA-PSK/WPA2-PSK Mixed Mode', 22]); - crypto_modes.push(['psk', 'WPA-PSK', 21]); + crypto_modes.push(['psk', 'WPA-PSK', 12]); } else { encr.description = _('WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP and ad-hoc mode) to be installed.'); @@ -1228,6 +1396,7 @@ return view.extend({ if (has_ap_eap192 || has_sta_eap192) { crypto_modes.push(['wpa3', 'WPA3-EAP', 33]); crypto_modes.push(['wpa3-mixed', 'WPA2-EAP/WPA3-EAP Mixed Mode', 32]); + crypto_modes.push(['wpa3-192', 'WPA3-EAP 192-bit Mode', 36]); } crypto_modes.push(['wpa2', 'WPA2-EAP', 34]); @@ -1251,6 +1420,7 @@ return view.extend({ 'wpa2': has_ap_eap || _('Requires hostapd with EAP support'), 'wpa3': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), 'wpa3-mixed': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), + 'wpa3-192': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), 'owe': has_ap_owe || _('Requires hostapd with OWE support') }, 'sta': { @@ -1265,6 +1435,7 @@ return view.extend({ 'wpa2': has_sta_eap || _('Requires wpa-supplicant with EAP support'), 'wpa3': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), 'wpa3-mixed': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), + 'wpa3-192': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), 'owe': has_sta_owe || _('Requires wpa-supplicant with OWE support') }, 'adhoc': { @@ -1308,7 +1479,7 @@ return view.extend({ else if (hwtype == 'broadcom') { crypto_modes.push(['psk2', 'WPA2-PSK', 33]); crypto_modes.push(['psk+psk2', 'WPA-PSK/WPA2-PSK Mixed Mode', 22]); - crypto_modes.push(['psk', 'WPA-PSK', 21]); + crypto_modes.push(['psk', 'WPA-PSK', 12]); crypto_modes.push(['wep-open', _('WEP Open System'), 11]); crypto_modes.push(['wep-shared', _('WEP Shared Key'), 10]); } @@ -1326,57 +1497,133 @@ return view.extend({ } - o = ss.taboption('encryption', form.Value, 'auth_server', _('Radius-Authentication-Server')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Flag, 'ppsk', _('Enable Private PSK (PPSK)'), _('Private Pre-Shared Key (PPSK) allows the use of different Pre-Shared Key for each STA MAC address. Private MAC PSKs are stored on the RADIUS server.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'] }); + + o = ss.taboption('encryption', form.Value, 'auth_server', _('RADIUS Authentication Server')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); o.rmempty = true; o.datatype = 'host(0)'; - o = ss.taboption('encryption', form.Value, 'auth_port', _('Radius-Authentication-Port'), _('Default %d').format(1812)); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, 'auth_port', _('RADIUS Authentication Port')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); o.rmempty = true; o.datatype = 'port'; + o.placeholder = '1812'; - o = ss.taboption('encryption', form.Value, 'auth_secret', _('Radius-Authentication-Secret')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, 'auth_secret', _('RADIUS Authentication Secret')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); o.rmempty = true; o.password = true; - o = ss.taboption('encryption', form.Value, 'acct_server', _('Radius-Accounting-Server')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, 'acct_server', _('RADIUS Accounting Server')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.rmempty = true; o.datatype = 'host(0)'; - o = ss.taboption('encryption', form.Value, 'acct_port', _('Radius-Accounting-Port'), _('Default %d').format(1813)); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, 'acct_port', _('RADIUS Accounting Port')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.rmempty = true; o.datatype = 'port'; + o.placeholder = '1813'; - o = ss.taboption('encryption', form.Value, 'acct_secret', _('Radius-Accounting-Secret')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, 'acct_secret', _('RADIUS Accounting Secret')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.rmempty = true; o.password = true; - o = ss.taboption('encryption', form.Value, 'dae_client', _('DAE-Client')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + /* extra RADIUS settings start */ + var attr_validate = function(section_id, value) { + if (!value) + return true; + + if (!/^[0-9]+(:s:.+|:d:[0-9]+|:x:([0-9a-zA-Z]{2})+)?$/.test(value) ) + return _('Must be in %s format.').format('[:]'); + + return true; + }; + + var req_attr_syntax = _('Format:') + '<attr_id>[:<syntax:value>]' + '
    ' + + 'syntax: s = %s; '.format(_('string (UTF-8)')) + 'd = %s; '.format(_('integer')) + 'x = %s'.format(_('octet string')) + + /* https://w1.fi/cgit/hostap/commit/?id=af35e7af7f8bb1ca9f0905b4074fb56a264aa12b */ + o = ss.taboption('encryption', form.DynamicList, 'radius_auth_req_attr', _('RADIUS Access-Request attributes'), + _('Attributes to add/replace in each request.') + '
    ' + req_attr_syntax ); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.validate = attr_validate; + o.placeholder = '126:s:Operator'; + + o = ss.taboption('encryption', form.DynamicList, 'radius_acct_req_attr', _('RADIUS Accounting-Request attributes'), + _('Attributes to add/replace in each request.') + '
    ' + req_attr_syntax ); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.validate = attr_validate; + o.placeholder = '77:x:74657374696e67'; + + o = ss.taboption('encryption', form.ListValue, 'dynamic_vlan', _('RADIUS Dynamic VLAN Assignment'), _('Required: Rejects auth if RADIUS server does not provide appropriate VLAN attributes.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.value('0', _('Disabled')); + o.value('1', _('Optional')); + o.value('2', _('Required')); + o.write = function (section_id, value) { + return this.super('write', [section_id, (value == 0) ? null: value]); + } + + o = ss.taboption('encryption', form.Flag, 'per_sta_vif', _('RADIUS Per STA VLAN'), _('Each STA is assigned its own AP_VLAN interface.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + + //hostapd internally defaults to vlan_naming=1 even with dynamic VLAN off + o = ss.taboption('encryption', form.Flag, 'vlan_naming', _('RADIUS VLAN Naming'), _('Off: vlanXXX, e.g., vlan1. On: vlan_tagged_interface.XXX, e.g. eth0.1.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + + o = ss.taboption('encryption', widgets.DeviceSelect, 'vlan_tagged_interface', _('RADIUS VLAN Tagged Interface'), _('E.g. eth0, eth1')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.size = 1; + o.rmempty = true; + o.multiple = false; + o.noaliases = true; + o.nocreate = true; + o.noinactive = true; + + o = ss.taboption('encryption', form.Value, 'vlan_bridge', _('RADIUS VLAN Bridge Naming Scheme'), _('E.g. br-vlan or brvlan.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.rmempty = true; + + /* extra RADIUS settings end */ + + o = ss.taboption('encryption', form.Value, 'dae_client', _('DAE-Client'), _('Dynamic Authorization Extension client.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.rmempty = true; o.datatype = 'host(0)'; - o = ss.taboption('encryption', form.Value, 'dae_port', _('DAE-Port'), _('Default %d').format(3799)); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, 'dae_port', _('DAE-Port'), _('Dynamic Authorization Extension port.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.rmempty = true; o.datatype = 'port'; + o.placeholder = '3799'; - o = ss.taboption('encryption', form.Value, 'dae_secret', _('DAE-Secret')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, 'dae_secret', _('DAE-Secret'), _('Dynamic Authorization Extension secret.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.rmempty = true; o.password = true; + //WPA(1) has only WPA IE. Only >= WPA2 has RSN IE Preauth frames. + o = ss.taboption('encryption', form.Flag, 'rsn_preauth', _('RSN Preauth'), _('Robust Security Network (RSN): Allow roaming preauth for WPA2-EAP networks (and advertise it in WLAN beacons). Only works if the specified network interface is a bridge. Shortens the time-critical reassociation process.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.Value, '_wpa_key', _('Key')); - o.depends('encryption', 'psk'); - o.depends('encryption', 'psk2'); - o.depends('encryption', 'psk+psk2'); - o.depends('encryption', 'psk-mixed'); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['0'] }); + add_dependency_permutations(o, { mode: ['sta', 'adhoc', 'mesh', 'sta-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'] }); o.depends('encryption', 'sae'); o.depends('encryption', 'sae-mixed'); o.datatype = 'wpakey'; @@ -1434,78 +1681,129 @@ return view.extend({ // Probe 802.11r support (and EAP support as a proxy for Openwrt) var has_80211r = L.hasSystemFeature('hostapd', '11r') || L.hasSystemFeature('hostapd', 'eap'); - o = ss.taboption('encryption', form.Flag, 'ieee80211r', _('802.11r Fast Transition'), _('Enables fast roaming among access points that belong to the same Mobility Domain')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('roaming', form.Flag, 'ieee80211r', _('802.11r Fast Transition'), _('Enables fast roaming among access points that belong to the same Mobility Domain')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa2', 'wpa3', 'wpa3-mixed', , 'wpa3-192'] }); if (has_80211r) - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk-mixed', 'sae', 'sae-mixed'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed', 'sae', 'sae-mixed'] }); o.rmempty = true; - o = ss.taboption('encryption', form.Value, 'nasid', _('NAS ID'), _('Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not needed with normal WPA(2)-PSK.')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('roaming', form.Value, 'nasid', _('NAS ID'), _('Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not needed with normal WPA(2)-PSK.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.depends({ ieee80211r: '1' }); o.rmempty = true; - o = ss.taboption('encryption', form.Value, 'mobility_domain', _('Mobility Domain'), _('4-character hexadecimal ID')); + o = ss.taboption('roaming', form.Value, 'mobility_domain', _('Mobility Domain'), _('4-character hexadecimal ID')); o.depends({ ieee80211r: '1' }); o.placeholder = '4f57'; o.datatype = 'and(hexstring,length(4))'; o.rmempty = true; - o = ss.taboption('encryption', form.Value, 'reassociation_deadline', _('Reassociation Deadline'), _('time units (TUs / 1.024 ms) [1000-65535]')); + o = ss.taboption('roaming', form.Value, 'reassociation_deadline', _('Reassociation Deadline'), _('time units (TUs / 1.024 ms) [1000-65535]')); o.depends({ ieee80211r: '1' }); o.placeholder = '1000'; o.datatype = 'range(1000,65535)'; o.rmempty = true; - o = ss.taboption('encryption', form.ListValue, 'ft_over_ds', _('FT protocol')); + o = ss.taboption('roaming', form.ListValue, 'ft_over_ds', _('FT protocol')); o.depends({ ieee80211r: '1' }); - o.value('1', _('FT over DS')); o.value('0', _('FT over the Air')); + o.value('1', _('FT over DS')); o.rmempty = true; - o = ss.taboption('encryption', form.Flag, 'ft_psk_generate_local', _('Generate PMK locally'), _('When using a PSK, the PMK can be automatically generated. When enabled, the R0/R1 key options below are not applied. Disable this to use the R0 and R1 key options.')); - o.depends({ ieee80211r: '1' }); + o = ss.taboption('roaming', form.Flag, 'ft_psk_generate_local', _('Generate PMK locally'), _('When using a PSK, the PMK can be automatically generated. When enabled, the R0/R1 key options below are not applied. Disable this to use the R0 and R1 key options.')); + add_dependency_permutations(o, { ieee80211r: ['1'], mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed'] }); o.default = o.enabled; o.rmempty = false; - o = ss.taboption('encryption', form.Value, 'r0_key_lifetime', _('R0 Key Lifetime'), _('minutes')); + o = ss.taboption('roaming', form.Value, 'r0_key_lifetime', _('R0 Key Lifetime'), _('minutes')); o.depends({ ieee80211r: '1' }); o.placeholder = '10000'; o.datatype = 'uinteger'; o.rmempty = true; - o = ss.taboption('encryption', form.Value, 'r1_key_holder', _('R1 Key Holder'), _('6-octet identifier as a hex string - no colons')); + o = ss.taboption('roaming', form.Value, 'r1_key_holder', _('R1 Key Holder'), _('6-octet identifier as a hex string - no colons')); o.depends({ ieee80211r: '1' }); o.placeholder = '00004f577274'; o.datatype = 'and(hexstring,length(12))'; o.rmempty = true; - o = ss.taboption('encryption', form.Flag, 'pmk_r1_push', _('PMK R1 Push')); + o = ss.taboption('roaming', form.Flag, 'pmk_r1_push', _('PMK R1 Push')); o.depends({ ieee80211r: '1' }); o.placeholder = '0'; o.rmempty = true; - o = ss.taboption('encryption', form.DynamicList, 'r0kh', _('External R0 Key Holder List'), _('List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID (NAS Identifier) to a destination MAC address when requesting PMK-R1 key from the R0KH that the STA used during the Initial Mobility Domain Association.')); + o = ss.taboption('roaming', form.DynamicList, 'r0kh', _('External R0 Key Holder List'), _('List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-Identifier,256-bit key as hex string.
    This list is used to map R0KH-ID (NAS Identifier) to a destination MAC address when requesting PMK-R1 key from the R0KH that the STA used during the Initial Mobility Domain Association.')); o.depends({ ieee80211r: '1' }); o.rmempty = true; - o = ss.taboption('encryption', form.DynamicList, 'r1kh', _('External R1 Key Holder List'), _ ('List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID as 6 octets with colons,128-bit key as hex string.
    This list is used to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD that can request PMK-R1 keys.')); + o = ss.taboption('roaming', form.DynamicList, 'r1kh', _('External R1 Key Holder List'), _ ('List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID as 6 octets with colons,256-bit key as hex string.
    This list is used to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD that can request PMK-R1 keys.')); o.depends({ ieee80211r: '1' }); o.rmempty = true; // End of 802.11r options + // Probe 802.11k and 802.11v support via EAP support (full hostapd has EAP) + if (L.hasSystemFeature('hostapd', 'eap')) { + /* 802.11k settings start */ + o = ss.taboption('roaming', form.Flag, 'ieee80211k', _('802.11k RRM'), _('Radio Resource Measurement - Sends beacons to assist roaming. Not all clients support this.')); + // add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk-mixed', 'sae', 'sae-mixed'] }); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + + o = ss.taboption('roaming', form.Flag, 'rrm_neighbor_report', _('Neighbour Report'), _('802.11k: Enable neighbor report via radio measurements.')); + o.depends({ ieee80211k: '1' }); + o.default = o.enabled; + + o = ss.taboption('roaming', form.Flag, 'rrm_beacon_report', _('Beacon Report'), _('802.11k: Enable beacon report via radio measurements.')); + o.depends({ ieee80211k: '1' }); + o.default = o.enabled; + /* 802.11k settings end */ + + /* 802.11v settings start */ + o = ss.taboption('roaming', form.ListValue, 'time_advertisement', _('Time advertisement'), _('802.11v: Time Advertisement in management frames.')); + o.value('0', _('Disabled')); + o.value('2', _('Enabled')); + o.write = function (section_id, value) { + return this.super('write', [section_id, (value == 2) ? value: null]); + } + + //Pull current System TZ setting + var tz = uci.get('system', '@system[0]', 'timezone'); + o = ss.taboption('roaming', form.Value, 'time_zone', _('Time zone'), _('802.11v: Local Time Zone Advertisement in management frames.')); + o.value(tz); + o.rmempty = true; + + o = ss.taboption('roaming', form.Flag, 'wnm_sleep_mode', _('WNM Sleep Mode'), _('802.11v: Wireless Network Management (WNM) Sleep Mode (extended sleep mode for stations).')); + o.rmempty = true; + + /* wnm_sleep_mode_no_keys: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commitdiff;h=bf98faaac8ed24cf7d3d93dd4fcd7304d109363b */ + o = ss.taboption('roaming', form.Flag, 'wnm_sleep_mode_no_keys', _('WNM Sleep Mode Fixes'), _('802.11v: Wireless Network Management (WNM) Sleep Mode Fixes: Prevents reinstallation attacks.')); + o.rmempty = true; + + o = ss.taboption('roaming', form.Flag, 'bss_transition', _('BSS Transition'), _('802.11v: Basic Service Set (BSS) transition management.')); + o.rmempty = true; + + /* in master, but not 21.02.1: proxy_arp */ + o = ss.taboption('roaming', form.Flag, 'proxy_arp', _('ProxyARP'), _('802.11v: Proxy ARP enables non-AP STA to remain in power-save for longer.')); + o.rmempty = true; + + /* TODO: na_mcast_to_ucast is missing: needs adding to hostapd.sh - nice to have */ + } + /* 802.11v settings end */ + } + + if (hwtype == 'mac80211') { o = ss.taboption('encryption', form.ListValue, 'eap_type', _('EAP-Method')); o.value('tls', 'TLS'); o.value('ttls', 'TTLS'); o.value('peap', 'PEAP'); o.value('fast', 'FAST'); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o = ss.taboption('encryption', form.Flag, 'ca_cert_usesystem', _('Use system certificates'), _("Validate server certificate using built-in system CA bundle,
    requires the \"ca-bundle\" package")); o.enabled = '1'; o.disabled = '0'; o.default = o.disabled; - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o.validate = function(section_id, value) { if (value == '1' && !L.hasSystemFeature('cabundle')) { return _("This option cannot be used because the ca-bundle package is not installed."); @@ -1514,28 +1812,28 @@ return view.extend({ }; o = ss.taboption('encryption', form.FileUpload, 'ca_cert', _('Path to CA-Certificate')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], ca_cert_usesystem: ['0'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], ca_cert_usesystem: ['0'] }); o = ss.taboption('encryption', form.Value, 'subject_match', _('Certificate constraint (Subject)'), _("Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See `logread -f` during handshake for actual values")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o = ss.taboption('encryption', form.DynamicList, 'altsubject_match', _('Certificate constraint (SAN)'), _("Certificate constraint(s) via Subject Alternate Name values
    (supported attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o = ss.taboption('encryption', form.DynamicList, 'domain_match', _('Certificate constraint (Domain)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (exact match)")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o = ss.taboption('encryption', form.DynamicList, 'domain_suffix_match', _('Certificate constraint (Wildcard)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (suffix match)")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); o = ss.taboption('encryption', form.FileUpload, 'client_cert', _('Path to Client-Certificate')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['tls'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['tls'] }); o = ss.taboption('encryption', form.FileUpload, 'priv_key', _('Path to Private Key')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['tls'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['tls'] }); o = ss.taboption('encryption', form.Value, 'priv_key_pwd', _('Password of Private Key')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['tls'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['tls'] }); o.password = true; o = ss.taboption('encryption', form.ListValue, 'auth', _('Authentication')); @@ -1547,7 +1845,7 @@ return view.extend({ o.value('EAP-MD5', 'EAP-MD5'); o.value('EAP-MSCHAPV2', 'EAP-MSCHAPv2'); o.value('EAP-TLS', 'EAP-TLS'); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'ttls'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'ttls'] }); o.validate = function(section_id, value) { var eo = this.section.children.filter(function(o) { return o.option == 'eap_type' })[0], @@ -1563,7 +1861,7 @@ return view.extend({ o.enabled = '1'; o.disabled = '0'; o.default = o.disabled; - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o.validate = function(section_id, value) { if (value == '1' && !L.hasSystemFeature('cabundle')) { return _("This option cannot be used because the ca-bundle package is not installed."); @@ -1572,71 +1870,97 @@ return view.extend({ }; o = ss.taboption('encryption', form.FileUpload, 'ca_cert2', _('Path to inner CA-Certificate')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'], ca_cert2_usesystem: ['0'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'], ca_cert2_usesystem: ['0'] }); o = ss.taboption('encryption', form.Value, 'subject_match2', _('Inner certificate constraint (Subject)'), _("Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See `logread -f` during handshake for actual values")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o = ss.taboption('encryption', form.DynamicList, 'altsubject_match2', _('Inner certificate constraint (SAN)'), _("Certificate constraint(s) via Subject Alternate Name values
    (supported attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o = ss.taboption('encryption', form.DynamicList, 'domain_match2', _('Inner certificate constraint (Domain)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (exact match)")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o = ss.taboption('encryption', form.DynamicList, 'domain_suffix_match2', _('Inner certificate constraint (Wildcard)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (suffix match)")); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o = ss.taboption('encryption', form.FileUpload, 'client_cert2', _('Path to inner Client-Certificate')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o = ss.taboption('encryption', form.FileUpload, 'priv_key2', _('Path to inner Private Key')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o = ss.taboption('encryption', form.Value, 'priv_key2_pwd', _('Password of inner Private Key')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], auth: ['EAP-TLS'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); o.password = true; o = ss.taboption('encryption', form.Value, 'identity', _('Identity')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); o = ss.taboption('encryption', form.Value, 'anonymous_identity', _('Anonymous Identity')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); o = ss.taboption('encryption', form.Value, 'password', _('Password')); - add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed'], eap_type: ['fast', 'peap', 'ttls'] }); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'ttls'] }); o.password = true; if (hwtype == 'mac80211') { // ieee802.11w options - if (L.hasSystemFeature('hostapd', '11w')) { - o = ss.taboption('encryption', form.ListValue, 'ieee80211w', _('802.11w Management Frame Protection'), _("Requires the 'full' version of wpad/hostapd and support from the wifi driver
    (as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)")); - o.value('', _('Disabled')); - o.value('1', _('Optional')); - o.value('2', _('Required')); - add_dependency_permutations(o, { mode: ['ap', 'ap-wds', 'sta', 'sta-wds'], encryption: ['owe', 'psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + o = ss.taboption('encryption', form.ListValue, 'ieee80211w', _('802.11w Management Frame Protection'), _("Note: Some wireless drivers do not fully support 802.11w. E.g. mwlwifi may have problems")); + o.value('0', _('Disabled')); + o.value('1', _('Optional')); + o.value('2', _('Required')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds', 'sta', 'sta-wds'], encryption: ['owe', 'psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] }); - o.defaults = { - '2': [{ encryption: 'sae' }, { encryption: 'owe' }, { encryption: 'wpa3' }, { encryption: 'wpa3-mixed' }], - '1': [{ encryption: 'sae-mixed'}], - '': [] - }; - - o = ss.taboption('encryption', form.Value, 'ieee80211w_max_timeout', _('802.11w maximum timeout'), _('802.11w Association SA Query maximum timeout')); - o.depends('ieee80211w', '1'); - o.depends('ieee80211w', '2'); - o.datatype = 'uinteger'; - o.placeholder = '1000'; - o.rmempty = true; - - o = ss.taboption('encryption', form.Value, 'ieee80211w_retry_timeout', _('802.11w retry timeout'), _('802.11w Association SA Query retry timeout')); - o.depends('ieee80211w', '1'); - o.depends('ieee80211w', '2'); - o.datatype = 'uinteger'; - o.placeholder = '201'; - o.rmempty = true; + o.defaults = { + '2': [{ encryption: 'sae' }, { encryption: 'owe' }, { encryption: 'wpa3' }, { encryption: 'wpa3-mixed' }], + '1': [{ encryption: 'sae-mixed'}], + '0': [] }; + o.write = function(section_id, value) { + if (value != this.default) + return form.ListValue.prototype.write.call(this, section_id, value); + else + return form.ListValue.prototype.remove.call(this, section_id); + }; + + o = ss.taboption('encryption', form.Value, 'ieee80211w_max_timeout', _('802.11w maximum timeout'), _('802.11w Association SA Query maximum timeout')); + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + o.datatype = 'uinteger'; + o.placeholder = '1000'; + o.rmempty = true; + + o = ss.taboption('encryption', form.Value, 'ieee80211w_retry_timeout', _('802.11w retry timeout'), _('802.11w Association SA Query retry timeout')); + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + o.datatype = 'uinteger'; + o.placeholder = '201'; + o.rmempty = true; + + if (L.hasSystemFeature('hostapd', 'ocv') || L.hasSystemFeature('wpasupplicant', 'ocv')) { + o = ss.taboption('encryption', form.ListValue, 'ocv', _('Operating Channel Validation'), _("Note: Workaround mode allows a STA that claims OCV capability to connect even if the STA doesn't send OCI or negotiate PMF.")); + o.value('0', _('Disabled')); + o.value('1', _('Enabled')); + o.value('2', _('Enabled (workaround mode)')); + o.default = '0'; + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + + o.validate = function(section_id, value) { + var modeopt = this.section.children.filter(function(o) { return o.option == 'mode' })[0], + modeval = modeopt.formvalue(section_id); + + if ((value == '2') && ((modeval == 'sta') || (modeval == 'sta-wds'))) { + return _('Workaround mode can only be used when acting as an access point.'); + } + + return true; + } + } + o = ss.taboption('encryption', form.Flag, 'wpa_disable_eapol_key_retries', _('Enable key reinstallation (KRACK) countermeasures'), _('Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load.')); add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] }); @@ -1832,6 +2156,26 @@ return view.extend({ uci.unset('wireless', radioDev.getName(), 'disabled'); } + var htmodes = radioDev.getHTModes(); + + if (bss.vht_operation && htmodes && htmodes.indexOf('VHT20') !== -1) { + for (var w = bss.vht_operation.channel_width; w >= 20; w /= 2) { + if (htmodes.indexOf('VHT'+w) !== -1) { + uci.set('wireless', radioDev.getName(), 'htmode', 'VHT'+w); + break; + } + } + } + else if (bss.ht_operation && htmodes && htmodes.indexOf('HT20') !== -1) { + var w = (bss.ht_operation.secondary_channel_offset == 'no secondary') ? 20 : 40; + uci.set('wireless', radioDev.getName(), 'htmode', 'HT'+w); + } + else { + uci.remove('wireless', radioDev.getName(), 'htmode'); + } + + uci.set('wireless', radioDev.getName(), 'channel', bss.channel); + section_id = next_free_sid(wifi_sections.length); uci.add('wireless', 'wifi-iface', section_id); @@ -1892,6 +2236,8 @@ return view.extend({ }); }); }).then(L.bind(function() { + ui.showModal(null, E('p', { 'class': 'spinning' }, [ _('Loading data…') ])); + return this.renderMoreOptionsModal(section_id); }, this)); }; @@ -1929,7 +2275,9 @@ return view.extend({ replace = s2.option(form.Flag, 'replace', _('Replace wireless configuration'), _('Check this option to delete the existing networks from this radio.')); - name = s2.option(form.Value, 'name', _('Name of the new network'), _('The allowed characters are: A-Z, a-z, 0-9 and _')); + name = s2.option(form.Value, 'name', _('Name of the new network'), + _('Name for OpenWrt network configuration. (No relation to wireless network name/SSID)') + '
    ' + + _('The allowed characters are: A-Z, a-z, 0-9 and _')); name.datatype = 'uciname'; name.default = 'wwan'; name.rmempty = false; @@ -2076,13 +2424,17 @@ return view.extend({ return hosts_radios_wifis; }); }, network)) + .then(L.bind(function(zones, data) { + data.push(zones); + return data; + }, network, zones)) .then(L.bind(this.poll_status, this, nodes)); }, this), 5); var table = E('table', { 'class': 'table assoclist', 'id': 'wifi_assoclist_table' }, [ E('tr', { 'class': 'tr table-titles' }, [ E('th', { 'class': 'th nowrap' }, _('Network')), - E('th', { 'class': 'th hide-xs' }, _('MAC-Address')), + E('th', { 'class': 'th hide-xs' }, _('MAC address')), E('th', { 'class': 'th' }, _('Host')), E('th', { 'class': 'th' }, _('Signal / Noise')), E('th', { 'class': 'th' }, _('RX Rate / TX Rate')) @@ -2093,5 +2445,7 @@ return view.extend({ return E([ nodes, E('h3', _('Associated Stations')), table ]); }, this, m)); - } + }, + + handleReset: null }); diff --git a/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json b/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json index 188c695f3..2fa3cf6ab 100644 --- a/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json +++ b/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json @@ -46,35 +46,9 @@ } }, - "admin/network/dhcp": { - "title": "DHCP and DNS", - "order": 30, - "action": { - "type": "view", - "path": "network/dhcp" - }, - "depends": { - "acl": [ "luci-mod-network-dhcp" ], - "uci": { "dhcp": true } - } - }, - - "admin/network/hosts": { - "title": "Hostnames", - "order": 40, - "action": { - "type": "view", - "path": "network/hosts" - }, - "depends": { - "acl": [ "luci-mod-network-dhcp" ], - "uci": { "dhcp": true } - } - }, - "admin/network/routes": { - "title": "Static Routes", - "order": 50, + "title": "Routing", + "order": 30, "action": { "type": "view", "path": "network/routes" @@ -84,9 +58,23 @@ } }, + "admin/network/dhcp": { + "title": "DHCP and DNS", + "order": 40, + "action": { + "type": "view", + "path": "network/dhcp" + }, + "depends": { + "acl": [ "luci-mod-network-dhcp" ], + "fs": { "/usr/sbin/dnsmasq": "executable" }, + "uci": { "dhcp": true } + } + }, + "admin/network/diagnostics": { "title": "Diagnostics", - "order": 60, + "order": 50, "action": { "type": "view", "path": "network/diagnostics" diff --git a/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json b/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json index d6c84bab2..96a0d5ccf 100644 --- a/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json +++ b/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json @@ -4,14 +4,19 @@ "read": { "cgi-io": [ "exec" ], "file": { - "/usr/libexec/luci-peeraddr": [ "exec" ] + "/etc/iproute2/rt_tables": [ "read" ], + "/proc/sys/net/ipv6/conf/*/mtu": [ "read" ], + "/proc/sys/net/ipv6/conf/*/hop_limit": [ "read" ], + "/usr/libexec/luci-peeraddr": [ "exec" ], + "/proc/sys/net/ipv[46]/conf/*": [ "read" ], + "/sys/class/net/*/brport/*": [ "read" ] }, "ubus": { "file": [ "exec" ], "iwinfo": [ "assoclist", "countrylist", "freqlist", "txpowerlist" ], "luci": [ "getSwconfigFeatures", "getSwconfigPortState" ] }, - "uci": [ "dhcp", "firewall", "network", "wireless" ] + "uci": [ "dhcp", "firewall", "network", "wireless", "openmptcprouter" ] }, "write": { "cgi-io": [ "exec" ], @@ -54,7 +59,8 @@ "/usr/bin/ping": [ "exec" ], "/usr/bin/ping6": [ "exec", "list" ], "/usr/bin/traceroute": [ "exec" ], - "/usr/bin/traceroute6": [ "exec", "list" ] + "/usr/bin/traceroute6": [ "exec", "list" ], + "/usr/bin/arp-scan": [ "exec", "list" ] }, "ubus": { "file": [ "exec", "stat" ] diff --git a/luci-proto-mbim/htdocs/luci-static/resources/protocol/mbim.js b/luci-proto-mbim/htdocs/luci-static/resources/protocol/mbim.js index 72bb9f7ba..85b101ec2 100644 --- a/luci-proto-mbim/htdocs/luci-static/resources/protocol/mbim.js +++ b/luci-proto-mbim/htdocs/luci-static/resources/protocol/mbim.js @@ -28,7 +28,7 @@ return network.registerProtocol('mbim', { return this._ubus('l3_device') || 'mbim-%s'.format(this.sid); }, - getOpkgPackage: function() { + getPackageName: function() { return 'umbim'; }, diff --git a/luci-proto-modemmanager/Makefile b/luci-proto-modemmanager/Makefile index 37d96f118..8f39d27ee 100644 --- a/luci-proto-modemmanager/Makefile +++ b/luci-proto-modemmanager/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Support for ModemManager LUCI_DEPENDS:=+modemmanager +PKG_LICENSE:=Apache-2.0 + include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-proto-modemmanager/htdocs/luci-static/resources/modemmanager_helper.js b/luci-proto-modemmanager/htdocs/luci-static/resources/modemmanager_helper.js new file mode 100644 index 000000000..b8558b885 --- /dev/null +++ b/luci-proto-modemmanager/htdocs/luci-static/resources/modemmanager_helper.js @@ -0,0 +1,101 @@ +'use strict'; +'require baseclass'; +'require fs'; + +return baseclass.extend({ + + _mmcliBin: '/usr/bin/mmcli', + + _emptyStringValue: '--', + + _parseIndex: function (dbusPath) { + var index = dbusPath.split('/').slice(-1); + return parseInt(index); + }, + + _parseOutput: function (output) { + try { + return this._removeEmptyStrings(JSON.parse(output)); + } catch (err) { + return null; + } + }, + + _removeEmptyStrings: function (obj) { + if (obj == null) { + return obj; + } + + if (typeof obj == 'string') { + if (obj == this._emptyStringValue) { + obj = null; + } + } else if (Array.isArray()) { + obj = obj.map(L.bind(function (it) { + return this._removeEmptyStrings(it); + }, this)); + } else { + var keys = Object.keys(obj); + keys.forEach(L.bind(function (key) { + obj[key] = this._removeEmptyStrings(obj[key]); + }, this)); + } + + return obj; + }, + + getModems: function () { + return fs.exec_direct(this._mmcliBin, [ '-L', '-J' ]).then(L.bind(function (res) { + var json = this._parseOutput(res); + if (json == null) { + return []; + } + var modems = json['modem-list']; + var tasks = []; + + modems.forEach(L.bind(function (modem) { + var index = this._parseIndex(modem); + if (!isNaN(index)) { + tasks.push(this.getModem(index)); + } + }, this)); + return Promise.all(tasks); + }, this)); + }, + + getModem: function (index) { + return fs.exec_direct(this._mmcliBin, [ '-m', index, '-J' ]).then(L.bind(function (modem) { + return this._parseOutput(modem); + }, this)); + }, + + getModemSims: function (modem) { + var tasks = []; + var simSlots = modem.generic['sim-slots']; + var sim = modem.generic.sim; + if (sim != null && !simSlots.includes(sim)) { + simSlots.push(sim); + } + + simSlots.forEach(L.bind(function (modem) { + var index = this._parseIndex(modem); + if (!isNaN(index)) { + tasks.push(this.getSim(index)); + } + }, this)); + return Promise.all(tasks); + }, + + getSim: function (index) { + return fs.exec_direct(this._mmcliBin, [ '-i', index, '-J' ]).then(L.bind(function (sim) { + return this._parseOutput(sim); + }, this)); + }, + + getModemLocation: function (modem) { + var index = this._parseIndex(modem['dbus-path']); + return fs.exec_direct(this._mmcliBin, [ '-m', index, '--location-get', '-J' ]).then(L.bind(function (location) { + return this._parseOutput(location); + }, this)); + } +}); diff --git a/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js b/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js index 33cf6dce4..b7a0d44b8 100644 --- a/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js +++ b/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js @@ -2,44 +2,19 @@ 'require fs'; 'require form'; 'require network'; - -function getModemList() { - return fs.exec_direct('/usr/bin/mmcli', [ '-L' ]).then(function(res) { - var lines = (res || '').split(/\n/), - tasks = []; - - for (var i = 0; i < lines.length; i++) { - var m = lines[i].match(/\/Modem\/(\d+)/); - if (m) - tasks.push(fs.exec_direct('/usr/bin/mmcli', [ '-m', m[1] ])); - } - - return Promise.all(tasks).then(function(res) { - var modems = []; - - for (var i = 0; i < res.length; i++) { - var man = res[i].match(/manufacturer: ([^\n]+)/), - mod = res[i].match(/model: ([^\n]+)/), - dev = res[i].match(/device: ([^\n]+)/); - - if (dev) { - modems.push({ - device: dev[1].trim(), - manufacturer: (man ? man[1].trim() : '') || '?', - model: (mod ? mod[1].trim() : '') || dev[1].trim() - }); - } - } - - return modems; - }); - }); -} +'require modemmanager_helper as helper'; network.registerPatternVirtual(/^mobiledata-.+$/); -network.registerErrorCode('CALL_FAILED', _('Call failed')); -network.registerErrorCode('NO_CID', _('Unable to obtain client ID')); -network.registerErrorCode('PLMN_FAILED', _('Setting PLMN failed')); +network.registerErrorCode('MM_CONNECT_FAILED', _('Connection attempt failed.')); +network.registerErrorCode('MM_CONNECT_IN_PROGRESS', _('Modem connection in progress. Please wait. This process will timeout after 2 minutes.')); +network.registerErrorCode('DEVICE_NOT_MANAGED', _('Device not managed by ModemManager.')); +network.registerErrorCode('INVALID_BEARER_LIST', _('Invalid bearer list. Possibly too many bearers created. This protocol supports one and only one bearer.')); +network.registerErrorCode('UNKNOWN_METHOD', _('Unknown and unsupported connection method.')); +network.registerErrorCode('DISCONNECT_FAILED', _('Disconnection attempt failed.')); +network.registerErrorCode('MM_INVALID_ALLOWED_MODES_LIST', _('Unable to set allowed mode list.')); +network.registerErrorCode('MM_NO_PREFERRED_MODE_CONFIGURED', _('No preferred mode configuration found.')); +network.registerErrorCode('MM_NO_ALLOWED_MODE_CONFIGURED', _('No allowed mode configuration found.')); +network.registerErrorCode('MM_FAILED_SETTING_PREFERRED_MODE', _('Unable to set preferred mode.')); return network.registerProtocol('modemmanager', { getI18n: function() { @@ -50,7 +25,7 @@ return network.registerProtocol('modemmanager', { return this._ubus('l3_device') || 'modemmanager-%s'.format(this.sid); }, - getOpkgPackage: function() { + getPackageName: function() { return 'modemmanager'; }, @@ -73,26 +48,88 @@ return network.registerProtocol('modemmanager', { renderFormOptions: function(s) { var dev = this.getL3Device() || this.getDevice(), o; - o = s.taboption('general', form.ListValue, 'device', _('Modem device')); + o = s.taboption('general', form.ListValue, '_modem_device', _('Modem device')); + o.ucioption = 'device'; o.rmempty = false; o.load = function(section_id) { - return getModemList().then(L.bind(function(devices) { - for (var i = 0; i < devices.length; i++) - this.value(devices[i].device, - '%s - %s (%s)'.format(devices[i].manufacturer, devices[i].model, devices[i].device)); + return helper.getModems().then(L.bind(function(devices) { + for (var i = 0; i < devices.length; i++) { + var generic = devices[i].modem.generic; + this.value(generic.device, + '%s - %s (%s)'.format(generic.manufacturer, generic.model, generic.device)); + } return form.Value.prototype.load.apply(this, [section_id]); }, this)); }; - s.taboption('general', form.Value, 'apn', _('APN')); - s.taboption('general', form.Value, 'pincode', _('PIN')); + o = s.taboption('general', form.Value, 'apn', _('APN')); + o.validate = function(section_id, value) { + if (value == null || value == '') + return true; - o = s.taboption('general', form.ListValue, 'auth', _('Authentication Type')); + if (!/^[a-zA-Z0-9\-.]*[a-zA-Z0-9]$/.test(value)) + return _('Invalid APN provided'); + + return true; + }; + + o = s.taboption('general', form.Value, 'pincode', _('PIN')); + o.datatype = 'and(uinteger,minlength(4),maxlength(8))'; + + o = s.taboption('general', form.Value, 'pukcode', _('PUK')); + o.datatype = "uinteger"; + + o = s.taboption('general', form.Value, 'plmn', _('PLMN')); + o.datatype = "uinteger"; + + o = s.taboption('general', form.DynamicList, 'allowedauth', _('Authentication Type')); o.value('both', _('PAP/CHAP (both)')); o.value('pap', 'PAP'); o.value('chap', 'CHAP'); + o.value('mschap', 'MSCHAP'); + o.value('mschapv2', 'MSCHAPv2'); + o.value('eap', 'EAP'); + o.value('', _('None')); + o.default = ''; + + o = s.taboption('general', form.ListValue, 'allowedmode', _('Allowed network technology'), + _('Setting the allowed network technology.')); + o.value('2g'); + o.value('3g'); + o.value('3g|2g'); + o.value('4g'); + o.value('4g|2g'); + o.value('4g|3g'); + o.value('4g|3g|2g'); + o.value('5g'); + o.value('5g|2g'); + o.value('5g|3g'); + o.value('5g|3g|2g'); + o.value('5g|4g'); + o.value('5g|4g|2g'); + o.value('5g|4g|3g'); + o.value('5g|4g|3g|2g'); + o.value('',_('any')); + o.default = ''; + + o = s.taboption('general', form.ListValue, 'preferredmode', _('Preferred network technology'), + _('Setting the preferred network technology.')); + o.value('2g'); + o.value('3g'); + o.value('4g'); + o.value('5g'); o.value('none', _('None')); - o.default = 'none'; + o.depends('allowedmode','3g|2g'); + o.depends('allowedmode','4g|2g'); + o.depends('allowedmode','4g|3g'); + o.depends('allowedmode','4g|3g|2g'); + o.depends('allowedmode','5g|2g'); + o.depends('allowedmode','5g|3g'); + o.depends('allowedmode','5g|3g|2g'); + o.depends('allowedmode','5g|4g'); + o.depends('allowedmode','5g|4g|2g'); + o.depends('allowedmode','5g|4g|3g'); + o.depends('allowedmode','5g|4g|3g|2g'); o = s.taboption('general', form.Value, 'username', _('PAP/CHAP username')); o.depends('auth', 'pap'); @@ -114,8 +151,66 @@ return network.registerProtocol('modemmanager', { o = s.taboption('advanced', form.Value, 'mtu', _('Override MTU')); o.placeholder = dev ? (dev.getMTU() || '1500') : '1500'; o.datatype = 'max(9200)'; + + o = s.taboption('general', form.Value, 'signalrate', _('Signal Refresh Rate'), _("In seconds")); + o.datatype = 'uinteger'; s.taboption('general', form.Value, 'metric', _('Gateway metric')); + + s.taboption('advanced', form.Flag, 'debugmode', _('Enable Debugmode')); + o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'), _('Amount of seconds to wait for the modem to become ready')); + o.datatype = 'uinteger'; + o.placeholder = '120'; + + o = s.taboption('advanced', form.ListValue, 'loglevel', _('Log output level')); + o.value('ERR', _('Error')) + o.value('WARN', _('Warning')); + o.value('INFO', _('Info')); + o.value('DEBUG', _('Debug')); + o.default = 'ERR'; + + + o = s.taboption('general', form.ListValue, 'init_epsbearer', _('Initial EPS Bearer'), + _('none: Do not set an initial EPS bearer (default behaviour)') + '
    ' + + _('default: Use the configuration options above (APN, IP Type, ...).') + '
    ' + + _('custom: Use different options when establishing a connection (these options are prefixed with %s).').format('init_')); + o.value('', _('none')); + o.value('default', 'default'); + o.value('custom', 'custom'); + o.default = ''; + o = s.taboption('general', form.Value, 'init_apn', _('Initial EPS Bearer APN')); + o.depends('init_epsbearer', 'custom'); + o.default = ''; + o = s.taboption('general', form.ListValue, 'init_allowedauth', _('Initial EPS Bearer Authentication Type')); + o.depends('init_epsbearer', 'custom'); + o.value('pap', 'PAP'); + o.value('chap', 'CHAP'); + o.value('mschap', 'MSCHAP'); + o.value('mschapv2', 'MSCHAPv2'); + o.value('eap', 'EAP'); + o.value('', _('None')); + o.default = ''; + o = s.taboption('general', form.Value, 'init_username', _('Initial EPS Bearer Username')); + o.depends('init_allowedauth', 'pap'); + o.depends('init_allowedauth', 'chap'); + o.depends('init_allowedauth', 'mschap'); + o.depends('init_allowedauth', 'mschapv2'); + o.depends('init_allowedauth', 'eap'); + o.default = ''; + o = s.taboption('general', form.Value, 'init_password', _('Initial EPS Bearer Password')); + o.depends('init_allowedauth', 'pap'); + o.depends('init_allowedauth', 'chap'); + o.depends('init_allowedauth', 'mschap'); + o.depends('init_allowedauth', 'mschapv2'); + o.depends('init_allowedauth', 'eap'); + o.default = ''; + o.password = true; + o = s.taboption('general', form.ListValue, 'init_iptype', _('Initial EPS Bearer IP Type')); + o.depends('init_epsbearer', 'custom'); + o.value('ipv4v6', _('IPv4/IPv6 (both - defaults to IPv4)')) + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.default = 'ipv4v6'; } }); diff --git a/luci-proto-modemmanager/htdocs/luci-static/resources/view/modemmanager/status.js b/luci-proto-modemmanager/htdocs/luci-static/resources/view/modemmanager/status.js new file mode 100644 index 000000000..649ff8321 --- /dev/null +++ b/luci-proto-modemmanager/htdocs/luci-static/resources/view/modemmanager/status.js @@ -0,0 +1,181 @@ +'use strict'; +'require ui'; +'require view'; +'require poll'; +'require dom'; +'require modemmanager_helper as helper'; + +return view.extend({ + load: function() { + return helper.getModems().then(function (modems) { + return Promise.all(modems.filter(function (modem){ + return modem != null; + }).map(function (modem) { + return helper.getModemSims(modem.modem).then(function (sims) { + modem.sims = sims.filter(function (sim) { + return sim != null; + }); + + return helper.getModemLocation(modem.modem).then(function (location) { + modem.location = location; + return modem; + }); + }); + })); + }); + }, + + pollData: function (container) { + poll.add(L.bind(function () { + return this.load().then(L.bind(function (modems) { + dom.content(container, this.renderContent(modems)); + }, this)); + }, this)); + }, + + renderSections: function (name, sections) { + if (sections.length == 0) { + sections.push(E('div', { 'class': 'cbi-section' }, [ + E('span', {}, _('Section %s is empty.').format(name)) + ])); + } + + return E('div', { 'class': 'cbi-section' }, [ + E('h1', {}, name), + ...sections + ]); + }, + + renderSection: function (name, table) { + var rowNodes = table.filter(function (row) { + return row[1] != null; + }).map(function (row) { + return E('tr', { 'class': 'tr' }, [ + E('td', { 'class': 'td', 'width': '33%' }, E('strong', {}, [row[0]])), + E('td', { 'class': 'td' }, [row[1]]) + ]); + }); + + var tableNode; + if (rowNodes.length == 0) { + tableNode = E('div', { 'class': 'cbi-section' }, [ + E('span', {}, _('Section %s is empty.').format(name)) + ]) + } else { + tableNode = E('table', { 'class': 'table', }, rowNodes); + } + + return E('div', { 'class': 'cbi-section' }, [ + E('h2', {}, [name]), + tableNode + ]); + }, + + renderContent: function (modems) { + var node = E('div', {}, E('div')); + + modems.forEach(L.bind(function (modem) { + var generic = modem.modem.generic; + var modem3gpp = modem.modem['3gpp']; + + var modemSection = this.renderSection(_('Modem Info'), [ + [_('Manufacturer'), generic.manufacturer], + [_('Model'), generic.model], + [_('Revision'), generic.revision], + [E('abbr', { 'title': _('International Mobile Station Equipment Identity') }, [ + _('IMEI') + ]), modem3gpp.imei], + [_('Device Identifier'), generic['device-identifier']], + [_('Power State'), generic['power-state']], + [_('State'), generic.state], + [_('Failed Reason'), generic['state-failed-reason']] + ]); + + var ownNumbersStr = generic['own-numbers'].join(', '); + var accessTechnologiesStr = generic['access-technologies'].join(', '); + var signalQualityValue = parseInt(generic['signal-quality'].value); + var networkSection = this.renderSection(_('Network Registration'), [ + [_('Own Numbers'), ownNumbersStr], + [_('Access Technologies'), accessTechnologiesStr], + [_('Operator') , modem3gpp['operator-name']], + [_('Operator Code'), modem3gpp['operator-code']], + [_('Registration State'), modem3gpp['registration-state']], + [_('Packet Service State'), modem3gpp['packet-service-state']], + [_('Signal Quality'), E('div', { 'class': 'cbi-progressbar', 'title': '%d %'.format(signalQualityValue) }, [ + E('div', { 'style': 'width: %d%%'.format(signalQualityValue) }) + ])] + ]); + + var location3gpp = {}; + if (modem.location != null) { + location3gpp = modem.location.modem.location['3gpp']; + } + var locationSection = this.renderSection(_('Cell Location'), [ + [E('abbr', { 'title': _('Cell ID') }, [ + 'CID' + ]), location3gpp.cid], + [E('abbr', { 'title': _('Location Area Code') }, [ + 'LAC' + ]), location3gpp.lac], + [E('abbr', { 'title': _('Mobile Country Code') }, [ + 'MCC' + ]), location3gpp.mcc], + [E('abbr', { 'title': _('Mobile Network Code') }, [ + 'MNC' + ]), location3gpp.mnc], + [E('abbr', { 'title': _('Tracking Area Code') }, [ + 'TAC' + ]), location3gpp.tac] + ]); + + var simTables = modem.sims.map(function (sim) { + var properties = sim.sim.properties; + return [ + [_('Active'), properties.active], + [_('Operator Name'), properties['operator-name']], + [E('abbr', { 'title': _('Integrated Circuit Card Identifier') }, [ + 'ICCID' + ]), properties.iccid], + [E('abbr', { 'title': _('International Mobile Subscriber Identity') }, [ + 'IMSI' + ]), properties.imsi] + ]; + }); + var simSubSections = simTables.map(L.bind(function (table, index) { + return this.renderSection(_('SIM %d').format(index + 1), table) + }, this)); + var simSection = this.renderSections(_('SIMs'), simSubSections); + + var sections = [ + E('div', { 'class': 'cbi-map-descr'}, []), + modemSection, + networkSection, + locationSection, + simSection + ].filter(function (section) { + return section != null; + }); + node.firstElementChild.appendChild(E('div', { 'data-tab': generic.device, 'data-tab-title': generic.device }, sections)); + }, this)); + ui.tabs.initTabGroup(node.firstElementChild.childNodes); + + return node; + }, + + render: function (modems) { + var content = E([], [ + E('h2', {}, [_('Cellular Network')]), + E('div') + ]); + var container = content.lastElementChild; + + dom.content(container, this.renderContent(modems)); + this.pollData(container); + + return content; + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-proto-modemmanager/root/usr/share/luci/menu.d/luci-proto-modemmanager.json b/luci-proto-modemmanager/root/usr/share/luci/menu.d/luci-proto-modemmanager.json new file mode 100644 index 000000000..eac7f3be6 --- /dev/null +++ b/luci-proto-modemmanager/root/usr/share/luci/menu.d/luci-proto-modemmanager.json @@ -0,0 +1,13 @@ +{ + "admin/status/modemmanager": { + "title": "Cellular Network", + "order": 10, + "action": { + "type": "view", + "path": "modemmanager/status" + }, + "depends": { + "acl": [ "luci-proto-modemmanager" ] + } + } +} diff --git a/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json b/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json index 716f4c465..0987c1c24 100644 --- a/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json +++ b/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json @@ -4,8 +4,13 @@ "read": { "cgi-io": [ "exec" ], "file": { - "/usr/bin/mmcli -L": [ "exec" ], - "/usr/bin/mmcli -m [0-9]": [ "exec" ] + "/usr/bin/mmcli -L -J": [ "exec" ], + "/usr/bin/mmcli -m [0-9]* -J": [ "exec" ], + "/usr/bin/mmcli -i [0-9]* -J": [ "exec" ], + "/usr/bin/mmcli -m [0-9]* --location-get -J": [ "exec" ] + }, + "ubus": { + "modemmanager": [ "*" ] } } } diff --git a/luci-theme-alpha/LICENSE b/luci-theme-alpha/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/luci-theme-alpha/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/luci-theme-alpha/Makefile b/luci-theme-alpha/Makefile new file mode 100644 index 000000000..af247d7e0 --- /dev/null +++ b/luci-theme-alpha/Makefile @@ -0,0 +1,54 @@ +# LuCI Alpha Theme +# Copyright 2024 derisamedia +# +# Licensed under the Apache License v2.0 +# http://www.apache.org/licenses/LICENSE-2.0 + +include $(TOPDIR)/rules.mk + +THEME_NAME:=alpha +THEME_TITLE:=Alpha + +PKG_NAME:=luci-theme-$(THEME_NAME) +PKG_VERSION:=3.9.4_beta +PKG_RELEASE:=9 + +include $(INCLUDE_DIR)/package.mk + +define Package/luci-theme-$(THEME_NAME) + SECTION:=luci + CATEGORY:=LuCI + SUBMENU:=9. Themes + DEPENDS:=+libc + TITLE:=LuCi Theme For OpenWrt And Alpha OS ONLY - $(THEME_TITLE) + URL:=http://facebook.com/derisamedia/ + PKGARCH:=all +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/luci-theme-$(THEME_NAME)/install + $(INSTALL_DIR) $(1)/etc/uci-defaults + echo "uci set luci.themes.$(THEME_TITLE)=/luci-static/$(THEME_NAME); uci commit luci" > $(1)/etc/uci-defaults/30-luci-theme-$(THEME_NAME) + $(INSTALL_DIR) $(1)/www/luci-static/$(THEME_NAME) + $(CP) -a ./luasrc/* $(1)/www/luci-static/$(THEME_NAME)/ 2>/dev/null || true + $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/themes/$(THEME_NAME) + $(CP) -a ./template/* $(1)/usr/lib/lua/luci/view/themes/$(THEME_NAME)/ 2>/dev/null || true + $(INSTALL_DIR) $(1)/www/luci-static/resources + $(CP) -a ./js/* $(1)/www/luci-static/resources/ 2>/dev/null || true + $(INSTALL_DIR) $(1)/etc/config + $(CP) -a ./root/etc/config/* $(1)/etc/config/ 2>/dev/null || true +endef + +define Package/luci-theme-$(THEME_NAME)/postinst +#!/bin/sh +[ -n "$${IPKG_INSTROOT}" ] || { + ( . /etc/uci-defaults/30-luci-theme-$(THEME_NAME) ) && rm -f /etc/uci-defaults/30-luci-theme-$(THEME_NAME) +} +endef + +$(eval $(call BuildPackage,luci-theme-$(THEME_NAME))) diff --git a/luci-theme-alpha/README.md b/luci-theme-alpha/README.md new file mode 100644 index 000000000..0ee085099 --- /dev/null +++ b/luci-theme-alpha/README.md @@ -0,0 +1,53 @@ +[issues]: https://github.com/derisamedia/luci-theme-alpha/issues +[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square +[release]: https://github.com/derisamedia/luci-theme-alpha/releases +[release-badge]: https://img.shields.io/badge/download-check_releases-blue +[group]: https://facebook.com/groups/indowrt +[group-badge]: https://img.shields.io/badge/visit_Facebook-Comunity-cyan +[discord]: https://discord.gg/gdZwmDQGUm +[discord-badge]: https://img.shields.io/badge/visit_Discord-Comunity-blue + + + + + + + +# luci-theme-alpha (BETA) +
    + + +[![issues][issues-badge]][issues] +[![release][release-badge]][release] +[![group][group-badge]][group] +[![discord][discord-badge]][discord] + + +Luci theme for Official Openwrt and Alpha OS build ,based on bootstrap and material luCi theme refferences, +Preview Screenshoot +

    + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/ss1.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/ss2.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/ss3.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/mobileview1.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/mobileview2.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/mobileview3.png) + +

    + +### FYI + +alpha os is my idea which wants to develop the OpenWrt community in Indonesia, even the world, thanks to friends who have supported this alpha-os theme, hopefully given health to all of us. + + +(old text) Mr. Sibondt once they said 'jalan ditempat komunitas indo', that's what moved my heart to make an innovation that I named alpha os (alpha = initial version, because it hasn't been perfect until now 😁) + +donate +buy me a padang rice or coffee +https://saweria.co/derisamedia diff --git a/luci-theme-alpha/js/menu-alpha.js b/luci-theme-alpha/js/menu-alpha.js new file mode 100644 index 000000000..62cae62e7 --- /dev/null +++ b/luci-theme-alpha/js/menu-alpha.js @@ -0,0 +1,179 @@ +"use strict"; +"require baseclass"; +"require ui"; +return baseclass.extend({ + __init__: function () { + ui.menu.load().then(L.bind(this.render, this)); + }, + render: function (tree) { + var node = tree, + url = ""; + this.renderModeMenu(node); + if (L.env.dispatchpath.length >= 3) { + for (var i = 0; i < 3 && node; i++) { + node = node.children[L.env.dispatchpath[i]]; + url = url + (url ? "/" : "") + L.env.dispatchpath[i]; + } + if (node) this.renderTabMenu(node, url); + } + document + .querySelector(".showSide") + .addEventListener( + "click", + ui.createHandlerFn(this, "handleSidebarToggle") + ); + document + .querySelector(".darkMask") + .addEventListener( + "click", + ui.createHandlerFn(this, "handleSidebarToggle") + ); + document.querySelector(".main > .loading").style.opacity = "0"; + document.querySelector(".main > .loading").style.visibility = "hidden"; + if (window.innerWidth <= 1152) + document.querySelector(".main-left").style.width = "0"; + window.addEventListener("resize", this.handleSidebarToggle, true); + }, + handleMenuExpand: function (ev) { + var a = ev.target, + ul1 = a.parentNode, + ul2 = a.nextElementSibling; + document.querySelectorAll("li.slide.active").forEach(function (li) { + if (li !== a.parentNode || li == ul1) { + li.classList.remove("active"); + li.childNodes[0].classList.remove("active"); + } + if (li == ul1) return; + }); + if (!ul2) return; + if ( + ul2.parentNode.offsetLeft + ul2.offsetWidth <= + ul1.offsetLeft + ul1.offsetWidth + ) + ul2.classList.add("align-left"); + ul1.classList.add("active"); + a.classList.add("active"); + a.blur(); + ev.preventDefault(); + ev.stopPropagation(); + }, + renderMainMenu: function (tree, url, level) { + var l = (level || 0) + 1, + ul = E("ul", { class: level ? "slide-menu" : "nav" }), + children = ui.menu.getChildren(tree); + if (children.length == 0 || l > 2) return E([]); + for (var i = 0; i < children.length; i++) { + var isActive = L.env.dispatchpath[l] == children[i].name, + submenu = this.renderMainMenu( + children[i], + url + "/" + children[i].name, + l + ), + hasChildren = submenu.children.length; + ul.appendChild( + E( + "li", + { + class: hasChildren + ? "slide" + (isActive ? " active" : "") + : isActive + ? " active" + : "", + }, + [ + E( + "a", + { + href: hasChildren ? "#" : L.url(url, children[i].name), + class: hasChildren + ? "menu" + (isActive ? " active" : "") + : null, + click: hasChildren + ? ui.createHandlerFn(this, "handleMenuExpand") + : null, + "data-title": hasChildren + ? children[i].title + : _(children[i].title), + }, + [_(children[i].title)] + ), + submenu, + ] + ) + ); + } + if (l == 1) { + var container = document.querySelector("#mainmenu"); + container.appendChild(ul); + container.style.display = ""; + } + return ul; + }, + renderModeMenu: function (tree) { + var ul = document.querySelector("#modemenu"), + children = ui.menu.getChildren(tree); + for (var i = 0; i < children.length; i++) { + var isActive = L.env.requestpath.length + ? children[i].name == L.env.requestpath[0] + : i == 0; + ul.appendChild( + E("li", {}, [ + E( + "a", + { + href: L.url(children[i].name), + class: isActive ? "active" : null, + }, + [_(children[i].title)] + ), + ]) + ); + if (isActive) this.renderMainMenu(children[i], children[i].name); + if (i > 0 && i < children.length) + ul.appendChild(E("li", { class: "divider" }, [E("span")])); + } + if (children.length > 1) ul.parentElement.style.display = ""; + }, + renderTabMenu: function (tree, url, level) { + var container = document.querySelector("#tabmenu"), + l = (level || 0) + 1, + ul = E("ul", { class: "tabs" }), + children = ui.menu.getChildren(tree), + activeNode = null; + if (children.length == 0) return E([]); + for (var i = 0; i < children.length; i++) { + var isActive = L.env.dispatchpath[l + 2] == children[i].name, + activeClass = isActive ? " active" : "", + className = "tabmenu-item-%s %s".format(children[i].name, activeClass); + ul.appendChild( + E("li", { class: className }, [ + E("a", { href: L.url(url, children[i].name) }, [ + _(children[i].title), + ]), + ]) + ); + if (isActive) activeNode = children[i]; + } + container.appendChild(ul); + container.style.display = ""; + if (activeNode) + container.appendChild( + this.renderTabMenu(activeNode, url + "/" + activeNode.name, l) + ); + return ul; + }, + handleSidebarToggle: function (ev) { + var width = window.innerWidth, + darkMask = document.querySelector(".darkMask"), + mainRight = document.querySelector(".main-right"), + mainLeft = document.querySelector(".main-left"), + open = mainLeft.style.width == ""; + if (width > 1152 || ev.type == "resize") open = true; + darkMask.style.visibility = open ? "" : "visible"; + darkMask.style.opacity = open ? "" : 1; + if (width <= 1152) mainLeft.style.width = open ? "0" : ""; + else mainLeft.style.width = ""; + mainLeft.style.visibility = open ? "" : "visible"; + mainRight.style["overflow-y"] = open ? "visible" : "hidden"; + }, +}); diff --git a/luci-theme-alpha/luasrc/app.js b/luci-theme-alpha/luasrc/app.js new file mode 100644 index 000000000..c61ad0834 --- /dev/null +++ b/luci-theme-alpha/luasrc/app.js @@ -0,0 +1,35 @@ +(function () { + // your page initialization code here + // the DOM will be available here + + const toggler = document.querySelector(".toggler"); + console.log(toggler); + toggler.addEventListener( + "click", + function (e) { + const element = document.querySelector(".navbar"); + element.classList.toggle("active"); + }, + false + ); + + // const isDark = localStorage.getItem("isDark"); + // if (isDark == 1) { + // const element = document.querySelector("body"); + // element.classList.add("dark"); + // } + // const themetoggler = document.querySelector(".themetoggler"); + // themetoggler.addEventListener( + // "click", + // function (e) { + // e.preventDefault(); + // const element = document.querySelector("body"); + // element.classList.toggle("dark"); + + // const isDark = localStorage.getItem("isDark"); + // localStorage.setItem("isDark", isDark == 1 ? 0 : 1); + // }, + // false + // ); + })(); + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/background/dashboard.png b/luci-theme-alpha/luasrc/background/dashboard.png new file mode 100644 index 000000000..e8fff7925 Binary files /dev/null and b/luci-theme-alpha/luasrc/background/dashboard.png differ diff --git a/luci-theme-alpha/luasrc/background/login.png b/luci-theme-alpha/luasrc/background/login.png new file mode 100644 index 000000000..e8fff7925 Binary files /dev/null and b/luci-theme-alpha/luasrc/background/login.png differ diff --git a/luci-theme-alpha/luasrc/brand.png b/luci-theme-alpha/luasrc/brand.png new file mode 100644 index 000000000..f8584ac11 Binary files /dev/null and b/luci-theme-alpha/luasrc/brand.png differ diff --git a/luci-theme-alpha/luasrc/favicon.png b/luci-theme-alpha/luasrc/favicon.png new file mode 100644 index 000000000..7c3f3acb1 Binary files /dev/null and b/luci-theme-alpha/luasrc/favicon.png differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Black.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Black.woff2 new file mode 100644 index 000000000..5b3c5bf92 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Black.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Bold.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Bold.woff2 new file mode 100644 index 000000000..2532ddd06 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Bold.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-ExtraBold.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-ExtraBold.woff2 new file mode 100644 index 000000000..1e54fb56f Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-ExtraBold.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-ExtraLight.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-ExtraLight.woff2 new file mode 100644 index 000000000..3ff561883 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-ExtraLight.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Light.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Light.woff2 new file mode 100644 index 000000000..c90308af0 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Light.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Medium.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Medium.woff2 new file mode 100644 index 000000000..12454556b Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Medium.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Regular.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Regular.woff2 new file mode 100644 index 000000000..598e76118 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Regular.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-SemiBold.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-SemiBold.woff2 new file mode 100644 index 000000000..6a73b9f74 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-SemiBold.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Thin.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Thin.woff2 new file mode 100644 index 000000000..e4982d90e Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Thin.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Bold.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Bold.ttf new file mode 100644 index 000000000..884f8582f Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Bold.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Light.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Light.ttf new file mode 100644 index 000000000..d4b8dbf38 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Light.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Medium.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Medium.ttf new file mode 100644 index 000000000..bd7d2bdb8 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Medium.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Regular.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Regular.ttf new file mode 100644 index 000000000..57d002f63 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Regular.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-SemiBold.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-SemiBold.ttf new file mode 100644 index 000000000..d74121fc5 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-SemiBold.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/stylesheet.css b/luci-theme-alpha/luasrc/fonts/stylesheet.css new file mode 100644 index 000000000..126a5101a --- /dev/null +++ b/luci-theme-alpha/luasrc/fonts/stylesheet.css @@ -0,0 +1,71 @@ +@font-face { + font-family: 'Inter'; + src: url('Inter-Thin.woff2') format('woff2'); + font-weight: 100; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-ExtraLight.woff2') format('woff2'); + font-weight: 200; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Light.woff2') format('woff2'); + font-weight: 300; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Medium.woff2') format('woff2'); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-SemiBold.woff2') format('woff2'); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Bold.woff2') format('woff2'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-ExtraBold.woff2') format('woff2'); + font-weight: 800; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Black.woff2') format('woff2'); + font-weight: 900; + font-style: normal; + font-display: swap; +} \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/gaya.css b/luci-theme-alpha/luasrc/gaya/gaya.css new file mode 100755 index 000000000..0bdbaa1be --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/gaya.css @@ -0,0 +1,3609 @@ + /* Base */ + @font-face { + font-family: "Inter-Regular"; + src: url('/luci-static/alpha/fonts/Inter-Regular.woff2'); + } + + @font-face { + font-family: "Inter-Medium"; + src: url('/luci-static/alpha/fonts/Inter-Medium.woff2'); + } + + @font-face { + font-family: "Inter-Black"; + src: url('/luci-static/alpha/fonts/Inter-Black.woff2'); + } + + @font-face { + font-family: "Inter-Bold"; + src: url('/luci-static/alpha/fonts/Inter-Bold.woff2'); + } + + @font-face { + font-family: "Quicksand-Bold"; + src: url('/luci-static/alpha/fonts/Quicksand-Bold.ttf'); + } + + @font-face { + font-family: argon; + src: url('/luci-static/alpha/fonts/argon.woff'); + + } + + [class^="icon-"], + [class*=" icon-"] { + font-family: argon !important; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + a { + color: #5a8dee; + text-decoration: none; + background-color: transparent; + } + + b { + color: #5a8dee; + text-decoration: none; + background-color: transparent; + font-family: "Quicksand-Bold"; + + } + + ::-webkit-scrollbar:hover { + background-color: rgba(100, 100, 100, 0.09); + } + + ::-webkit-scrollbar-thumb:vertical { + background: rgba(100, 100, 100, 0.5); + -webkit-border-radius: 100px; + } + + ::-webkit-scrollbar-thumb:vertical:active { + background: rgba(100, 100, 100, 0.61); + -webkit-border-radius: 100px; + } + + ::-webkit-scrollbar { + width: 0.2em !important; + overflow: visible; + border-radius: 4px; + -webkit-border-radius: 4px; + } + + ::-webkit-scrollbar-track { + opacity: 0; + -webkit-transition: all 0.5s; + } + + ::-webkit-scrollbar-thumb { + overflow: visible; + border-radius: 4px; + background: rgba(100, 100, 100, 0.2); + } + + .icon-hello-world:before { + content: "\e90e"; + } + + .icon-expand_more:before { + content: "\e20b"; + } + + .icon-menu:before { + content: "\e20e"; + } + + .icon-favorite:before { + content: "\e291"; + } + + .icon-spinner:before { + content: "\e603"; + } + + .icon-delete:before { + content: "\e900"; + } + + .icon-edit:before { + content: "\e901"; + } + + .icon-use:before { + content: "\e902"; + } + + .icon-loading:before { + content: "\e903"; + } + + .icon-switch:before { + content: "\e904"; + } + + .icon-error:before { + content: "\e905"; + } + + .icon-dashboard:before { + content: "\e906"; + } + + .icon-logout:before { + content: "\e907"; + } + + .icon-Network:before { + content: "\e908"; + } + + .icon-services:before { + content: "\e909"; + } + + .icon-system:before { + content: "\e90a"; + } + + .icon-vpn:before { + content: "\e90b"; + } + + .icon-storage:before { + content: "\e90c"; + } + + .icon-statistics:before { + content: "\e90d"; + } + + .icon-angle-right:before { + content: "\e90f"; + } + + .icon-user:before { + content: "\e971"; + } + + .icon-question:before { + content: "\f059"; + } + + :root { + --main-color: #09c; + --header-bg: #161624; + --header-color: rgb(10, 10, 10); + --bar-bg: #3f3f3f69; + --menu-bg-color: #fff; + --menu-color: #5f6368; + --menu-color-hover: #202124; + --main-menu-color: #202124; + --submenu-bg-hover: #4d5ca5; + --submenu-bg-hover-active: #09c; + --font-body: 'Inter-Regular'; + } + + tt { + font-family: "Quicksand-Bold"; + color: #09c; + } + + em { + font-style: italic; + color: #fff + } + + p { + display: block; + margin-block-start: 1em; + margin-block-end: 1em; + margin-inline-start: 0px; + margin-inline-end: 0px; + color: #ffffff; + } + + li { + display: block; + list-style-type: disc; + margin-block-start: 5px; + margin-block-end: 5px; + margin-inline-start: 0px; + margin-inline-end: 0px; + color: #ffffff; + } + + small { + font-size: smaller; + color: #ffff; + } + + label { + cursor: default; + color: #ffffff; + } + + .table { + position: relative; + display: table; + } + + .tr { + display: table-row; + } + + .thead { + display: table-header-group; + } + + .tbody { + display: table-row-group; + } + + .tfoot { + display: table-footer-group; + } + + .td, + .th { + line-height: normal; + display: table-cell; + vertical-align: middle; + padding: 0.5em; + } + + .th { + font-weight: 700; + } + + .tr.placeholder { + height: 4em; + } + + .tr.placeholder>.td { + line-height: 3; + position: absolute; + right: 0; + bottom: 0; + left: 0; + text-align: center !important; + background: inherit; + } + + .table[width="33%"], + .th[width="33%"], + .td[width="33%"] { + width: 33%; + } + + .col-1 { + flex: 1 1 30px !important; + } + + .col-2 { + flex: 2 2 60px !important; + } + + .col-3 { + flex: 3 3 90px !important; + } + + .col-4 { + flex: 4 4 120px !important; + } + + .col-5 { + flex: 5 5 150px !important; + } + + .col-6 { + flex: 6 6 180px !important; + } + + .col-7 { + flex: 7 7 210px !important; + } + + .col-8 { + flex: 8 8 240px !important; + } + + .col-9 { + flex: 9 9 270px !important; + } + + .col-10 { + flex: 10 10 300px !important; + } + + * { + box-sizing: border-box; + padding: 0; + } + + .h1, + .h2, + .h3, + .h4, + .h5, + .h6, + h1, + h2, + h3, + h4, + h5, + h6 { + font-family: inherit; + font-weight: 400; + line-height: 1.1 !important; + color: #fff; + } + + html { + overflow-y: hidden; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + + body { + font-size: 0.8rem; + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; + background-color: rgb(10, 10, 10); + } + + .text { + font-style: italic; + color: #fff; + } + + html, + body { + font-family: var(--font-body); + height: 100%; + margin: 0; + padding: 0; + } + + select { + color: #555; + border: thin solid #ccc; + background-color: #fff; + background-image: none; + padding: 0.36rem 0.8rem; + } + + .btn, + button, + select, + input, + .cbi-dropdown { + height: 2.3rem; + color: rgba(255, 255, 255, 0.87); + border: 0; + border-bottom: 2px solid #30304b; + border-radius: 10px; + border-radius: 20px; + outline: 0; + background-color: #222235; + background-image: none; + box-shadow: none; + padding: 0.5rem; + } + + select, + .cbi-dropdown { + width: inherit; + cursor: default; + } + + select:not([multiple="multiple"]):focus, + input:not(.cbi-button):focus, + .cbi-dropdown:focus { + border-color: var(--main-color); + } + + .cbi-dropdown, + select[multiple="multiple"] { + height: auto; + } + + pre { + overflow: auto; + color: #fff; + } + + code { + font-size: 1rem; + font-size-adjust: 0.35; + color: #101010; + border-radius: 0px; + background: #ddd; + padding: 1px 3px; + } + + abbr { + cursor: help; + text-decoration: underline; + color: #84d0ea; + } + + hr { + opacity: 0.1; + border-color: #eee; + margin: 1rem 0; + } + + /* End Base */ + + /* Header */ + header, + .main { + position: absolute; + width: 100%; + } + + header { + position: fixed; + z-index: 2000; + float: left; + height: 4rem; + transition: box-shadow 0.2s; + color: var(--header-color); + background: #2222359a; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + } + + header>.fill>.container { + margin-top: 0.5rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + padding: 0.5rem 1rem 0; + } + + header>.fill>.container>#logo { + padding: 0; + margin: 0 !important; + position: absolute; + left: 0; + top: 50%; + height: 100%; + transform: translateY(-50%); + padding: 1rem; + display: flex; + justify-content: center; + width: calc(16rem); + } + + header>.fill>.container>#logo>img { + width: auto; + height: 100%; + margin-top: -0.1rem; + } + + header>.fill>.container>.brand { + font-size: 1.4rem; + position: absolute; + cursor: default; + vertical-align: text-bottom; + text-decoration: none; + color: var(--header-color); + } + + header>.fill>.container>.status { + position: fixed; + top: 9px; + right: 1em; + float: right; + } + + header>.fill>.container>.status>* { + position: relative; + top: 0.2rem; + float: left; + left: -2.5rem; + margin-left: 0.3rem; + cursor: pointer; + } + + header>.fill>.container>.logout { + position: fixed; + top: 9px; + right: 1em; + float: right; + } + + header>.fill>.container>.logout>* { + position: relative; + top: 0.2rem; + float: left; + right: 0rem; + margin-left: 0.3rem; + cursor: pointer; + content: ""; + } + + .logout a { + position: absolute; + right: 14px; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/logout.svg) no-repeat; + text-indent: -9999px; + background-size: 32px; + } + + /* End Header */ + + /* Footer */ + footer { + font-size: 0.8rem; + overflow: hidden; + text-align: center; + white-space: nowrap; + color: #000000; + padding: 1rem; + } + + footer>a { + text-decoration: none; + align-items: center; + color: #e6e6e696; + border-bottom: 0; + background-color: #2222359a; + border-radius: 10px; + padding: 9px; + padding-bottom: 3px; + padding-top: 3px; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + } + + small { + font-size: 90%; + line-height: 1.42857143; + white-space: normal; + } + + /* End Footer */ + + /* Navbar */ + @media screen and (min-width: 720px) { + .navbar { + position: fixed; + bottom: 50%; + transform: translateY(50%); + transition-duration: 200ms; + right: 30px; + border-top: var(--navBorder); + text-align: center; + background-color: #000000da; + box-shadow: 0 0 10px 0px #0000002d; + box-sizing: content-box; + border-radius: 10px; + } + + .navbar--hidden { + transform: translateY(60px); + box-shadow: none; + } + + .navbar .toggler { + transition-duration: 100ms; + position: absolute; + background: #ffffffb0; + box-shadow: 0 0 10px 0 #0000000f; + transform: translateY(50%); + bottom: 50%; + right: calc(100% + 10px); + width: 32px; + height: 32px; + padding: 8px; + border-radius: 100%; + content: ""; + box-sizing: border-box; + cursor: pointer; + } + + .navbar .toggler img { + transform: rotate(270deg); + } + + .navbar .dropdown { + display: flex; + flex-direction: column; + overflow: hidden; + width: 64px; + padding: 0.25rem; + } + + .navbar .dropdown a { + display: block; + text-align: center; + padding: 8px; + text-decoration: none; + max-width: 100px; + width: 100%; + } + + .navbar .dropdown a img { + width: 100%; + } + + .navbar.active { + right: -64px; + } + + .navbar.active .toggler { + right: calc(100% + 10px); + } + + .navbar.active .toggler img { + transform: rotate(90deg); + } + } + + @media screen and (max-width: 720px) { + .navbar { + + overflow: hidden; + position: fixed; + bottom: 5px; + top: auto; + left: 10px; + right: auto; + width: 95%; + align: center; + transition: transform 0.5s; + border-top: var(--navBorder); + text-align: center; + height: calc(50px + constant(safe-area-inset-bottom)); + height: calc(50px + env(safe-area-inset-bottom)); + background-color: #00000079; + border-radius: 20px; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + + } + + .navbar--hidden { + transform: translateY(60px); + box-shadow: none; + } + + .navbar a { + float: left; + text-align: center; + padding: 8px 0; + text-decoration: none; + } + + .navbar a img { + width: 28px; + } + } + + /* End Navbar */ + + .main { + position: relative; + top: 4rem; + bottom: 0; + overflow-y: auto; + height: calc(100% - 4rem); + } + + .main>.loading { + position: fixed; + z-index: 1000; + top: 0; + opacity: 1; + visibility: visible; + width: 100%; + height: 100%; + pointer-events: none; + background-color: rgba(0, 0, 0, 0.781); + transition: .4s ease-in-out; + border-radius: 10px; + } + + .main>.loading>span { + font-family: monospace; + font-size: 2rem; + font-size-adjust: 0.35; + position: relative; + top: 12.5%; + display: block; + text-align: center; + color: #888; + } + + .main>.loading>span>.loading-img { + display: inline-flex; + gap: 10px; + } + + .main>.loading>span>.loading-img:before, + .loading-img:after { + content: ""; + height: 20px; + aspect-ratio: 1; + border-radius: 50%; + background: + linear-gradient(#222 0 0) top/100% 0% no-repeat, + radial-gradient(farthest-side, #000 95%, #0000) 50%/8px 8px no-repeat #ffffff; + animation: l9 4s infinite ease-in; + } + + @keyframes l9 { + 0% { + background-size: 100% 0%, 8px 8px; + background-position: top, 50% 50% + } + + 80% { + background-size: 100% 70%, 8px 8px; + background-position: top, 50% 70% + } + + 84%, + 100% { + background-size: 100% 0%, 8px 8px; + background-position: top, 50% 50% + } + } + + .cbi-map { + margin-top: 10px; + } + + #cbi-shadowsocksr .cbi-map-descr { + display: none; + } + + strong { + font-weight: bold; + color: rgb(255, 255, 255); + } + + .main-right { + float: right; + width: calc(100% - 16rem); + height: 100%; + } + + .nowrap:not(.td) { + white-space: nowrap; + color: #ffffff; + } + + [disabled="disabled"] { + pointer-events: none; + } + + /* Sidebar */ + .main>.main-left { + position: fixed; + top: 4.8rem; + width: calc(0% + 16rem); + float: left; + overflow-x: auto; + background-color: #2222359a; + transition: visibility 400ms, width 400ms; + border-top-left-radius: 0px; + border-top-right-radius: 20px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 20px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + height: calc(100% - 3.5rem); + + } + + .main>.main-left>.nav { + padding: 0.5rem 0.5rem 2rem; + } + + .main>.main-left>.nav>li { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + + .main>.main-left>.nav>li>[data-title="Logout"] { + display: flex; + padding: 0.5rem 1rem; + } + + .main>.main-left>.nav>li a { + display: block; + color: #cbcbcb; + } + + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + font-size: 1rem; + color: #fff; + } + + .main>.main-left>.nav>li.slide.active { + background-color: unset; + } + + .main>.main-left>.nav>.slide { + padding: 0; + } + + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"], + .main>.main-left>.nav>li>[data-title="Dashboard"] { + font-size: 1rem; + font-weight: 500; + display: flex; + align-items: center; + width: 100%; + text-decoration: none; + color: #fff; + padding: 0.5rem 1rem; + transition-duration: 200ms; + margin-bottom: 5px; + } + + .main>.main-left>.nav>.slide>.menu::before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/app.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>.menu.active::before {} + + .main>.main-left>.nav>.slide>[data-title="Status"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/status.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="System"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/system.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Services"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/services.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="NAS"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/nas.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Modem"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/modem.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Network"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/network.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="VPN"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/vpn.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Docker"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/docker.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>li>[data-title="iStore"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/istore.svg) no-repeat; + background-size: 25px; + } + + /* End Sidebar */ + + .modemenu-buttons { + display: flex; + flex-wrap: wrap; + align-items: center; + color: var(--header-color); + background: var(--header-bg); + transition: box-shadow 0.2s; + box-shadow: 0 2px 5px rgb(0 0 0 / 26%); + padding: 0.5rem; + } + + #modemenu { + display: flex; + align-items: center; + flex-wrap: wrap; + margin: 0.25rem; + } + + #modemenu>li.divider { + margin-left: 0.25rem; + margin-right: 0.25rem; + border: 0.5rem solid var(--submenu-bg-hover); + border-left: 1px solid var(--submenu-bg-hover); + border-right: 1px solid var(--submenu-bg-hover); + border-radius: 1rem; + } + + .danger { + background-color: #ff7d60 !important; + } + + .warning { + background-color: #bebebe87 !important; + border-radius: 10px; + color: #fff; + } + + .success { + background-color: #5cb85c !important; + } + + .error { + color: red; + } + + .alert, + .alert-message { + font-weight: 700; + margin-bottom: 1em; + border: 0; + border-radius: 20px; + background-color: #2222359a; + padding: 1rem; + margin: 1rem; + } + + .alert-message>h4 { + font-size: 110%; + font-weight: 700; + } + + .alert-message>* { + margin: 0.5rem 0; + } + + body[class*="node-"]>.main>.main-left>.nav>.slide>.menu::before { + transition: transform 0.1s ease-in-out; + } + + body[class*="node-"]>.main>.main-left>.nav>.slide>.menu.active::before { + transition: transform 0.2s ease-in-out; + } + + .main>.main-left>.nav>li>[data-title="Logout"]::before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/logout.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide:hover { + background: none; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a { + white-space: nowrap; + text-decoration: none; + padding: 0.4rem 2rem; + } + + .main>.main-left>.nav>.slide>.slide-menu>li:not(.active):hover>a { + color: #fff; + } + + .main>.main-left>.nav>.slide>.slide-menu>.active:hover { + background-color: var(--main-color); + } + + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>.slide>.slide-menu>li, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + position: relative; + overflow: hidden; + transform: translate3d(0, 0, 0); + } + + .main>.main-left>.nav>.slide>.menu::after, + .main>.main-left>.nav>.slide>.slide-menu>li::after, + .main>.main-left>.nav>li>[data-title="Logout"]::after, + .main>.main-left>.nav>li>[data-title="iStore"]::after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 100%; + content: ""; + transition: transform 0.5s, opacity 1s; + transform: scale(10, 10); + pointer-events: none; + opacity: 0; + background-image: radial-gradient(circle, #000 10%, transparent 10.01%); + background-repeat: no-repeat; + background-position: 50%; + } + + .main>.main-left>.nav>.slide>.menu:active::after, + .main>.main-left>.nav>.slide>.slide-menu>li:active::after, + .main>.main-left>.nav>li>[data-title="Logout"]:active::after, + .main>.main-left>.nav>li>[data-title="iStore"]:active::after { + transition: 0s; + transform: scale(0, 0); + opacity: 0.2; + } + + #maincontent>.container { + margin: 0 2rem 1rem; + } + + ul { + line-height: normal; + } + + li { + list-style-type: none; + } + + h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: thin solid #eee; + } + + h2 { + font-size: 1.8rem; + font-family: "Quicksand-Bold"; + letter-spacing: 5px; + text-align: center; + padding-bottom: 10px; + margin: 2rem 0 0; + color: #ffffff; + animation-duration: 1s; + animation-name: down; + } + + h3 { + font-size: 1.2rem; + font-family: 'Inter-Bold'; + letter-spacing: 2px; + padding-bottom: 10px; + margin: 2rem 0 0; + color: #ffffff; + } + + h4 { + font-size: 1.2rem; + color: #fff; + padding-bottom: 10px; + margin: 2rem 0 0; + } + + h5 { + font-size: 1rem; + padding-bottom: 10px; + margin: 2rem 0 0; + } + + .cbi-tab-descr { + color: #09c; + margin: 1em; + padding: 1rem; + } + + #tabmenu { + padding: 0; + } + + .cbi-section, + .cbi-section-error, + #iptables, + .Firewall form, + #cbi-network>.cbi-section-node, + #cbi-wireless>.cbi-section-node, + #cbi-wireless>#wifi_assoclist_table, + [data-tab-title], + [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), + [data-page="admin-system-opkg"] #maincontent>.container { + font-family: inherit; + font-weight: 400; + font-style: normal; + line-height: normal; + min-width: inherit; + border: 0; + border-radius: 0; + background-color: #2222359a; + margin: 1rem 0 0; + padding: 2rem; + border-radius: 20px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } + + .cbi-modal .cbi-section, + .cbi-section .cbi-section {} + + .cbi-modal .cbi-tabmenu { + margin-left: 0; + } + + .cbi-map-descr, + .cbi-section-descr { + font-size: small; + text-align: center; + line-height: 1.42857143; + color: #999; + padding: 0.5rem; + } + + .cbi-section>legend { + display: none !important; + } + + fieldset>fieldset, + .cbi-section>.cbi-section { + border: 0; + box-shadow: none; + margin: 0; + padding: 0; + } + + .cbi-section>h3:first-child, + .panel-title { + font-size: 1.4rem; + line-height: 1; + display: block; + width: 100%; + padding-bottom: 1rem; + color: #e4e4e4; + border-bottom: thin solid #eeeeee00; + margin: 0 0 0.5rem; + } + + .cbi-section>h4:first-child, + .cbi-section>p:first-child, + [data-tab-title]>h3:first-child, + [data-tab-title]>h4:first-child, + [data-tab-title]>p:first-child { + padding-top: 1rem; + } + + table { + border-spacing: 0; + border-collapse: collapse; + } + + table, + .table { + overflow-y: hidden; + width: 100%; + border-radius: 10px; + } + + .container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td { + padding: 0.6rem; + } + + .cbi-section-table-cell { + line-height: 1.1; + align-self: flex-end; + flex: 1 1 auto; + } + + tr>td, + tr>th, + .tr>.td, + .tr>.th, + .cbi-section-table-row::before, + #cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) { + color: #ffffff; + border-top: thin solid rgba(255, 255, 255, 0); + } + + .table[width="100%"]>.tr:first-child>.td { + margin: auto 0; + } + + .cbi-section-table-row { + margin-bottom: 1rem; + text-align: center !important; + } + + .cbi-section-table-row:last-child { + margin-bottom: 0; + } + + .cbi-section-table-row>.cbi-value-field [data-dynlist]>input, + .cbi-section-table-row>.cbi-value-field input.cbi-input-password { + width: calc(100% - 1.5rem); + } + + table table, + .table .table, + .cbi-value-field table, + .cbi-value-field .table, + td>table>tbody>tr>td, + .td>.table>.tbody>.tr>.td, + .cbi-value-field>table>tbody>tr>td, + .cbi-value-field>.table>.tbody>.tr>.td { + border: 0; + } + + .btn, + .cbi-button, + .item::after { + font-size: 0.8rem; + display: inline-block; + width: auto !important; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all 0.2s ease-in-out; + text-align: center; + vertical-align: middle; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: rgba(0, 0, 0, 0.87); + border: 0; + background-color: #f0f0f0; + background-image: none; + -webkit-appearance: none; + -ms-touch-action: manipulation; + touch-action: manipulation; + padding: 0 0.8rem; + } + + .cbi-button-up { + transform: scaleY(-1); + } + + .cbi-button:not(select) { + -webkit-appearance: none !important; + } + + .cbi-button+.cbi-button { + margin-left: 0.6rem; + } + + .btn:hover, + .btn:focus, + .btn:active, + .cbi-button:hover, + .cbi-button:focus, + .cbi-button:active, + .item:hover::after, + .item:focus::after, + .item:active::after, + .cbi-page-actions .cbi-button-apply+.cbi-button-save:hover, + .cbi-page-actions .cbi-button-apply+.cbi-button-save:focus, + .cbi-page-actions .cbi-button-apply+.cbi-button-save:active { + text-decoration: none; + outline: 0; + } + + .btn:hover, + .btn:focus, + .cbi-button:hover, + .cbi-button:focus, + .item:hover::after, + .item:focus::after { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + } + + .btn:active, + .cbi-button:active, + .item:active::after { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); + } + + .cbi-button-up:hover, + .cbi-button-up:focus { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 -2px 2px rgba(0, 0, 0, 0.2); + } + + .cbi-button-up:active { + box-shadow: 0 -10px 20px rgba(0, 0, 0, 0.19), 0 -6px 6px rgba(0, 0, 0, 0.23); + } + + .btn:disabled, + .cbi-button:disabled { + cursor: not-allowed; + pointer-events: none; + opacity: 0.5; + box-shadow: none; + } + + .alert-message [class="btn"], + .modal div[class="btn"], + .cbi-button-find, + .cbi-button-link, + .cbi-button-up, + .cbi-button-down, + .cbi-button-neutral, + .cbi-button[name="zero"], + .cbi-button[name="restart"], + .cbi-button[onclick="hide_empty(this)"] { + font-weight: 700; + background-color: #d4d4d4; + } + + .btn.primary, + .cbi-page-actions .cbi-button-save, + .cbi-page-actions .cbi-button-apply+.cbi-button-save, + .cbi-button-add, + .cbi-button-save, + .cbi-button-positive, + .cbi-button-link, + .cbi-button[value="Enable"], + .cbi-button[value="Scan"], + .cbi-button[value^="Back"], + .cbi-button-neutral[onclick="handleConfig(event)"] { + font-weight: 400; + color: #fff; + background-color: rgba(0, 229, 255, 0.47); + border-radius: 20px; + } + + .cbi-page-actions .cbi-button-apply, + .cbi-section-actions .cbi-button-edit, + .cbi-button-edit, + .cbi-button-apply, + .cbi-button-reload, + .cbi-button-action, + .cbi-button[value="Submit"], + .cbi-button[value="Upload"], + .cbi-button[value$="Apply"], + .cbi-button[onclick="addKey(event)"] { + font-weight: 400; + color: #fff; + background-color: rgba(0, 229, 255, 0.47); + border-radius: 20px; + } + + .btn.danger, + .cbi-section-remove>.cbi-button, + .cbi-button-remove, + .cbi-button-reset, + .cbi-button-negative, + .cbi-button[value="Stop"], + .cbi-button[value="Kill"], + .cbi-button[onclick="reboot(this)"], + .cbi-button-neutral[value="Restart"] { + font-weight: 400; + color: #fff; + background-color: rgba(255, 0, 0, 0.47); + border-radius: 20px; + } + + .btn[value="Dismiss"], + .cbi-button[value="Terminate"], + .cbi-button[value="Reset"], + .cbi-button[value="Disabled"], + .cbi-button[onclick^="iface_reconnect"], + .cbi-button[onclick="handleReset(event)"], + .cbi-button-neutral[value="Disable"] { + font-weight: 400; + color: #fff; + border: thin solid #eea236; + background-color: #f0ad4e; + } + + .cbi-button-success, + .cbi-button-download, + .cbi-button[name="backup"], + .cbi-button[value="Download"], + .cbi-button[value="Save mtdblock"] { + font-weight: 400; + color: #fff; + border: thin solid #4cae4c; + background-color: #5cb85c; + } + + .a-to-btn { + text-decoration: none; + } + + .cbi-value-field .cbi-button-add { + font-weight: 700; + margin: 9px 0 4px 3px; + padding: 1px 6px; + } + + .tabs { + border-bottom: 0; + background-color: #2222359a; + border-radius: 20px; + padding: 9px; + padding-bottom: 3px; + padding-top: 3px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } + + .tabs>li, + .cbi-tabmenu>li { + display: inline-block; + cursor: pointer; + padding: 0.4rem; + margin: 0.3rem; + align-items: center; + + } + + .tool_label_span { + color: aqua; + } + + .tabs>li { + padding-bottom: 0.4rem; + } + + .tabs>li[class~="active"], + .tabs>li:hover { + border-bottom-color: var(--main-color); + } + + .tabs>li:hover { + cursor: pointer; + border-bottom-color: #c9c9c9; + } + + .tabs>li>a, + .cbi-tabmenu>li>a { + text-decoration: none; + color: #ffffff; + padding: 0.6rem 0.9rem; + + } + + .tabs>li[class~="active"]>a { + color: var(--main-color); + } + + .cbi-tabmenu { + border-bottom: 0; + background-color: #2222359a; + border-radius: 20px; + padding: 9px; + padding-bottom: 3px; + padding-top: 3px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } + + .cbi-tabmenu>li:hover { + background-color: #474747; + border-radius: 20px; + + + } + + .cbi-tabmenu>li[class~="cbi-tab"] { + background-color: #ff94946a; + border-radius: 20px; + } + + .cbi-tabmenu>li[class~=data-tab=] { + color: #ffffff; + } + + [data-tab-title] { + overflow: hidden; + height: 0; + opacity: 0; + margin: 0; + padding: 0rem 1rem !important; + } + + [data-tab-active="true"] { + overflow: visible; + height: auto; + opacity: 1; + transition: opacity 0.25s ease-in; + margin: inherit !important; + } + + .cbi-section-node-tabbed { + margin-top: 0; + border-top: 0; + padding: 0; + } + + .cbi-value-field, + .cbi-value-description { + line-height: 1.25; + display: table-cell; + } + + .cbi-value-description { + font-size: small; + padding-top: 0.4rem; + opacity: 0.5; + color: #fff; + } + + .cbi-value-title { + display: table-cell; + float: left; + width: 23rem; + padding-top: 0.35rem; + padding-right: 2rem; + text-align: right; + word-wrap: break-word; + } + + .cbi-value { + display: inline-block; + width: 100%; + padding: 0.35rem 1rem 0.2rem; + } + + .cbi-value ul { + line-height: 1.25; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 25rem; + } + + #cbi-firewall-zone .cbi-input-select, + #cbi-network-switch_vlan .cbi-input-select { + min-width: 11rem; + } + + #cbi-network-switch_vlan .cbi-input-text { + max-width: 3rem; + } + + .cbi-input-invalid { + color: red; + border-bottom-color: red; + } + + .cbi-section-error { + font-weight: 700; + line-height: 1.42857143; + border: thin solid red; + border-radius: 3px; + background-color: #fce6e6; + margin: 18px; + padding: 6px; + } + + .cbi-section-error ul { + margin: 0 0 0 20px; + } + + .cbi-section-error ul li { + font-weight: 700; + color: red; + } + + .td[data-title]::before { + font-weight: 700; + display: none; + content: attr(data-title) ":\20"; + text-align: left; + white-space: nowrap; + padding: 0.25rem 0; + } + + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-weight: 700; + display: table-cell; + align-self: center; + flex: 1 1 5%; + content: attr(data-title) "\20"; + text-align: center; + vertical-align: middle; + white-space: normal; + word-wrap: break-word; + padding: 0.25rem; + } + + .cbi-rowstyle-2 .cbi-button-up, + .cbi-rowstyle-2 .cbi-button-down, + body:not(.Interfaces) .cbi-rowstyle-2:first-child {} + + .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; + } + + .td.cbi-section-actions { + text-align: right !important; + vertical-align: middle; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 5px; + } + + .td.cbi-section-actions>* { + display: inline-flex; + } + + .td.cbi-section-actions>button { + display: block; + } + + .td.cbi-section-actions>*>*, + .td.cbi-section-actions>*>form>* { + margin: 0 5px; + } + + .td.cbi-section-actions>*>form { + display: inline-flex; + margin: 0; + } + + .cbi-dynlist { + line-height: 1.3; + flex-direction: column; + min-height: 30px; + cursor: text; + } + + .cbi-dynlist>.item { + position: relative; + max-width: 25rem; + margin-right: 2em; + pointer-events: none; + color: #666; + border-bottom: 2px solid rgba(0, 0, 0, 0.26); + outline: 0; + padding: 0.5em 0.25em 0.25em 0; + } + + .cbi-dynlist[name="sshkeys"]>.item { + max-width: none; + } + + .cbi-dynlist>.item::after { + font-weight: 700; + position: absolute; + right: -2em; + bottom: 0; + display: inline-flex; + min-height: 17px; + content: "\00D7"; + pointer-events: auto; + color: #fff; + border: thin solid #d43f3a; + background-color: #d9534f; + padding: 0 6px; + border-radius: 5px; + } + + .cbi-dynlist>.item>span { + white-space: normal; + word-break: break-word; + } + + .cbi-dynlist>.add-item { + display: inline-flex; + align-items: center; + width: 100%; + min-width: 16rem; + } + + .cbi-dynlist>.add-item:not([ondrop])>input { + overflow: hidden; + width: 100%; + min-width: 15rem; + white-space: nowrap; + text-overflow: ellipsis; + } + + .cbi-dynlist>.add-item[ondrop]>input { + min-width: 13rem; + } + + .cbi-dynlist, + .cbi-dropdown { + position: relative; + display: inline-flex; + padding: 0; + } + + .cbi-dropdown[placeholder*="select"] { + max-width: 25rem; + height: auto; + margin-top: -3px; + } + + .cbi-dropdown>ul { + display: flex; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + list-style: none; + outline: 0; + margin: 0 !important; + padding: 0; + } + + .cbi-dropdown>.open { + flex-basis: 15px; + } + + .cbi-dropdown>.open, + .cbi-dropdown>.more { + font-size: 1rem; + font-weight: 900; + line-height: 2; + display: flex; + flex-direction: column; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; + cursor: default; + text-align: center; + outline: 0; + padding: 0 0.25em; + } + + .cbi-dropdown.btn { + min-height: 1.8rem; + padding-top: 0px; + padding-bottom: 0px; + padding-right: 0px; + } + + .cbi-dropdown.btn>.open { + font-size: 0.8rem; + margin: 0 5px; + padding: 0px; + } + + .cbi-dropdown.btn>div { + margin: 0px; + } + + .cbi-dropdown>.more, + .cbi-dropdown>ul>li[placeholder] { + font-weight: 700; + display: none; + color: #777; + } + + .cbi-dropdown>ul>li { + display: none; + overflow: hidden; + align-items: center; + align-self: center; + flex-grow: 1; + flex-shrink: 1; + min-height: 20px; + white-space: nowrap; + text-overflow: ellipsis; + padding: 0.3rem; + } + + .cbi-dropdown>ul>li[display]:not([display="0"]) { + border-left: thin solid #ccc; + } + + .cbi-dropdown[empty]>ul { + max-width: 1px; + } + + .cbi-dropdown>ul>li>form { + display: none; + pointer-events: none; + margin: 0; + padding: 0; + } + + .cbi-dropdown>ul>li img { + margin-right: 0.25em; + vertical-align: middle; + } + + .cbi-dropdown>ul>li>form>input[type="checkbox"] { + height: auto; + margin: 0; + } + + .cbi-dropdown>ul>li input[type="text"] { + height: 20px; + } + + .cbi-dropdown[open]>ul.dropdown { + position: absolute; + z-index: 1100; + display: block; + width: auto; + min-width: 100%; + max-width: none; + max-height: 200px !important; + border: thin solid #918e8c; + background: #787878a8; + box-shadow: 0 0 4px #918e8c; + color: var(--main-menu-color); + } + + .cbi-dropdown>ul>li[display], + .cbi-dropdown[open]>ul.preview, + .cbi-dropdown[open]>ul.dropdown>li, + .cbi-dropdown[multiple]>ul>li>label, + .cbi-dropdown[multiple][open]>ul.dropdown>li, + .cbi-dropdown[multiple][more]>.more, + .cbi-dropdown[multiple][empty]>.more { + display: flex; + align-items: center; + flex-grow: 1; + justify-content: space-around; + } + + .cbi-dropdown[open]>ul.dropdown>li {} + + .cbi-dropdown[open]>ul.dropdown>li[selected] { + background: #b0d0f0; + } + + .cbi-dropdown[open]>ul.dropdown>li.focus { + background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); + } + + .cbi-dropdown[open]>ul.dropdown>li:last-child { + margin-bottom: 0; + } + + .cbi-dropdown[open]>ul.dropdown>li[unselectable] { + opacity: 0.7; + } + + .cbi-dropdown[disabled] { + pointer-events: none; + opacity: 0.6; + } + + .cbi-dropdown[open] .zonebadge { + width: auto; + } + + .cbi-progressbar { + border-radius: 15px; + overflow: hidden; + position: relative; + min-width: 170px; + height: 30px; + background: #11111d61; + margin: 6px 0; + } + + .cbi-progressbar title { + font-family: "Quicksand-Bold"; + letter-spacing: 5px; + text-align: center; + padding-bottom: 10px; + margin: 2rem 0 0; + color: #ffffff; + } + + .cbi-progressbar>div { + width: 0; + height: 100%; + transition: width 2s ease-in; + background: #0099cc; + padding: 0.5rem; + } + + .cbi-progressbar::after { + font-family: monospace; + font-size: 1.2em; + font-weight: 700; + font-size-adjust: 0.38; + line-height: normal; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 0; + left: 0; + overflow: hidden; + content: attr(title); + text-align: center; + white-space: pre; + text-overflow: ellipsis; + text-shadow: 0 0 2px #eee; + } + + #modal_overlay { + position: fixed; + z-index: 900; + top: 4rem; + right: 10000px; + bottom: 0; + left: -10000px; + overflow-y: scroll; + transition: opacity 0.125s ease-in; + opacity: 0; + background: rgba(0, 0, 0, 0.7); + -webkit-overflow-scrolling: touch; + } + + .modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 90%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + border-radius: 20px !important; + background: #8f8f8f75; + margin: 5em auto; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + padding: 1em; + + } + + .modal>* { + line-height: normal; + flex-basis: 100%; + margin-bottom: 0.5em; + max-width: 100%; + } + + .modal>pre, + .modal>textarea { + font-size: 1rem; + font-size-adjust: 0.35; + overflow: auto; + margin-bottom: 0.5em; + cursor: auto; + white-space: pre-wrap; + color: #eee; + outline: 0; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 8.5px; + } + + .modal>h4 { + margin: 0.5em 0; + } + + .modal ul { + margin-left: 2.2em; + } + + .modal li { + list-style-type: square; + color: rgb(216, 216, 216); + } + + .modal p { + padding-left: 0.25rem; + word-break: break-word; + } + + .modal .label { + font-size: 0.6rem; + font-weight: 400; + cursor: default; + border-radius: 0; + padding: 0.1rem 0.3rem 0; + } + + .modal .label.warning { + background-color: #f0ad4e !important; + } + + .modal.cbi-modal { + max-width: 90%; + max-height: none; + } + + body.modal-overlay-active { + overflow: hidden; + height: 100vh; + } + + body.modal-overlay-active #modal_overlay { + right: 0; + left: 0; + opacity: 1; + } + + .spinning { + position: relative; + padding-left: 32px !important; + color: #fff; + } + + .spinning::before { + position: absolute; + font-size: medium; + font-style: "Quicksand-Bold"; + left: 8px; + width: 20px; + height: 20px; + content: ""; + animation: anim-rotate 2s infinite cubic-bezier(0.18, 0.89, 0.32, 1.28); + background: url(./icon/loading.svg) no-repeat center; + background-size: 20px; + } + } + + .left, + .left::before { + text-align: left !important; + } + + .right, + .right::before { + text-align: right !important; + } + + .top { + align-self: flex-start !important; + vertical-align: top !important; + } + + .bottom { + align-self: flex-end !important; + vertical-align: bottom !important; + } + + .inline { + display: inline; + } + + .cbi-page-actions { + padding-top: 1rem; + text-align: center; + } + + .cbi-page-actions>form[method="post"] { + display: inline-block; + } + + .th[data-type="button"], + .td[data-type="button"], + .th[data-type="fvalue"], + .td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; + } + + .ifacebadge { + display: inline-flex; + background: #ffffff33; + padding: 0.5rem 0.8rem; + border-radius: 10px; + } + + td>.ifacebadge, + .td>.ifacebadge { + font-size: 0.8rem; + background-color: #000000; + border-radius: 10px; + } + + .ifacebadge>em, + .ifacebadge>img { + display: inline-block; + align-self: flex-start; + margin: 0 0.2rem; + } + + .ifacebadge>img+img { + margin: 0 0.2rem 0 0; + } + + .network-status-table .ifacebox { + flex-grow: 1; + margin: 0.5em; + } + + .network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; + } + + .network-status-table .ifacebox-body>span { + flex: 10 10 auto; + height: 100%; + } + + .network-status-table .ifacebox-body .ifacebadge { + align-items: center; + flex: 1 1 auto; + min-width: 220px; + background-color: #11111d; + margin: 0.5em 0.25em 0; + padding: 0.5em; + border-radius: 10px; + } + + .cbi-input-textarea { + font-family: monospace; + width: 100%; + min-height: 14rem; + color: #000; + padding: 0.8rem; + } + + #syslog { + font-size: small; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + resize: none; + color: #eee; + border: 0; + border-radius: 20px; + background-color: #10101057; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 1rem; + } + + #syslog:focus { + outline: 0; + } + + .uci-change-list { + font-family: monospace; + } + + .uci-change-list ins, + .uci-change-legend-label ins { + display: block; + text-decoration: none; + border: thin solid #0f0; + background-color: #cfc; + padding: 2px; + } + + .uci-change-list del, + .uci-change-legend-label del { + font-style: normal; + display: block; + text-decoration: none; + border: thin solid red; + background-color: #fcc; + padding: 2px; + } + + .uci-change-list var, + .uci-change-legend-label var { + font-style: normal; + display: block; + text-decoration: none; + border: thin solid #ccc; + background-color: #eee; + padding: 2px; + } + + .uci-change-list var ins, + .uci-change-list var del { + font-style: normal; + white-space: pre; + border: 0; + padding: 0; + } + + .uci-change-legend { + padding: 5px; + } + + .uci-change-legend-label { + float: left; + width: 150px; + color: #fff; + } + + .uci-change-legend-label>ins, + .uci-change-legend-label>del, + .uci-change-legend-label>var { + display: block; + float: left; + width: 10px; + height: 10px; + margin-right: 4px; + } + + .uci-change-legend-label var ins, + .uci-change-legend-label var del { + line-height: 0.4; + border: 0; + } + + #iwsvg, + #iwsvg2, + #bwsvg { + border: thin solid #d4d4d4 !important; + } + + .ifacebox { + line-height: 1.25; + display: inline-flex; + flex-direction: column; + min-width: 100px; + background-color: #54545450; + border-radius: 20px; + flex-wrap: nowrap; + align-content: center; + justify-content: flex-start; + align-items: center; + } + + div.ifacebox-head { + --zone-color-rgb: 144, 240, 144; + background-color: rgb(43, 79, 43); + } + + style attribute { + --zone-color-rgb: 144, 240, 144; + background-color: rgb(43, 79, 43); + } + + .ifacebox-head { + background: #939393; + padding: 0.25em; + color: #fff; + } + + .ifacebox-head.active { + background: var(--bar-bg); + } + + .ifacebox-body { + padding: 0.25em; + } + + .cbi-image-button { + margin-left: 0.5rem; + } + + .zonebadge { + display: inline-block; + padding: 0.2rem 0.5rem; + } + + .zonebadge .ifacebadge { + border: thin solid #6c6c6c; + margin: 0.1rem 0.2rem; + padding: 0.2rem 0.3rem; + } + + .zonebadge>input[type="text"] { + min-width: 10rem; + margin-top: 0.3rem; + padding: 0.16rem 1rem; + } + + .zonebadge>em, + .zonebadge>strong { + display: inline-block; + margin: 0 0.2rem; + } + + .cbi-value-field .cbi-input-checkbox, + .cbi-value-field .cbi-input-radio { + margin-top: 0.1rem; + } + + .cbi-value-field>ul>li .ifacebadge { + margin-top: -0.5rem; + margin-left: 0.4rem; + background-color: #eee; + } + + .cbi-section-table-row>.cbi-value-field .cbi-dropdown { + min-width: 7rem; + } + + .cbi-section-create { + display: inline-flex; + align-items: center; + margin: 0.5rem -3px; + } + + .cbi-section-create>* { + margin: 0.5rem; + } + + div.cbi-value var, + td.cbi-value-field var, + .td.cbi-value-field var { + font-style: italic; + color: #0069d6; + } + + .cbi-optionals { + border-top: thin solid #ccc; + padding: 1rem 1rem 0; + } + + .cbi-dropdown-container { + position: relative; + } + + .cbi-tooltip-container, + span[data-tooltip], + span[data-tooltip] .label { + cursor: help !important; + text-align: left !important; + font-size: 80% !important; + color: #fff !important; + } + + .cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + transition: opacity 0.25s ease-out; + white-space: pre; + pointer-events: none; + opacity: 0; + border-radius: 20px; + background: #54545450; + box-shadow: 0 0 2px #444; + padding: 2px 5px; + -webkit-backdrop-filter: blur(20px); + backdrop-filter: blur(20px); + + } + + .cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + transition: opacity 0.25s ease-in; + opacity: 1; + } + + .zonebadge .cbi-tooltip { + background: inherit; + margin: -1.5rem 0 0 -0.5rem; + padding: 0.25rem; + } + + .zonebadge-empty { + color: #404040; + background: repeating-linear-gradient(45deg, + rgba(204, 204, 204, 0.5), + rgba(204, 204, 204, 0.5) 5px, + rgba(255, 255, 255, 0.5) 5px, + rgba(255, 255, 255, 0.5) 10px); + } + + .zone-forwards { + display: flex; + min-width: 10rem; + } + + .zone-forwards>* { + flex: 1 1 45%; + } + + .zone-forwards>span { + flex-basis: 10%; + text-align: center; + padding: 0 0.25rem; + } + + .zone-forwards .zone-src, + .zone-forwards .zone-dest { + display: flex; + flex-direction: column; + } + + label>input[type="checkbox"], + label>input[type="radio"] { + position: relative; + top: 0.4rem; + right: 0.2rem; + vertical-align: bottom; + margin: 0; + } + + label[data-index][data-depends] { + padding-right: 2em; + } + + .darkMask { + position: fixed; + z-index: 99; + width: 100%; + height: 100%; + content: ""; + transition: opacity 400ms, visibility 400ms; + visibility: hidden; + opacity: 0; + background-color: #2222359a; + } + + #diag-rc-output>pre, + #command-rc-output>pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1.2rem; + font-size-adjust: 0.35; + line-height: normal; + display: block; + overflow-y: hidden; + width: 100%; + white-space: pre; + color: #eee; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 8.5px; + } + + input[name="ping"], + input[name="traceroute"], + input[name="nslookup"] { + width: 80%; + } + + .node-main-login>.main fieldset { + display: inline; + overflow: hidden; + margin-bottom: 1rem; + border: 0; + background: none; + box-shadow: none; + padding: 0.5rem; + } + + .node-main-login>.main .cbi-value-title { + width: 9.5rem; + } + + .node-main-login>.main #maincontent { + text-align: center; + } + + .node-main-login>.main .container { + display: inline-block; + margin-top: 2rem !important; + text-align: left; + background-color: #2e2b2b00; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 1rem 3.5rem 2rem; + } + + .node-main-login>.main .cbi-value>* { + display: inline-block !important; + } + + .node-main-login>.main .cbi-input-text { + width: 100% !important; + min-width: 15rem; + } + + .node-status-overview>.main fieldset:nth-child(4) .td:nth-child(2), + .node-status-processes>.main .table .tr .td:nth-child(3) { + white-space: normal; + } + + [data-page="admin-system-reboot"] p { + padding-left: 2rem; + } + + [data-page="admin-system-reboot"] p>span { + position: relative; + top: 0.1rem; + left: 1rem; + } + + #cbi-samba [data-tab="template"] .cbi-value-title { + width: auto; + padding-bottom: 0.6rem; + } + + .controls>*>.btn:not([aria-label$="page"]) { + flex-grow: initial !important; + margin-top: 0.1rem; + } + + .controls>#pager>.btn[aria-label$="page"] { + font-size: 1.4rem; + font-weight: 700; + } + + .controls>*>label { + margin-bottom: 0.2rem; + } + + [data-page="admin-system-opkg"] div.btn { + display: inline; + padding: 0.3rem 0.6rem; + } + + [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), + [data-page="admin-system-opkg"] #maincontent>.container { + margin-top: 2rem; + padding-top: 0.1rem; + } + + [data-page="admin-system-opkg"] #maincontent>.container { + margin: 2rem 2rem 1rem; + } + + .td.version, + .td.size { + white-space: normal !important; + word-break: break-word; + } + + .cbi-tabmenu+.cbi-section { + margin-top: 0; + } + + #cbi-wireless>#wifi_assoclist_table>.tr { + box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; + } + + #cbi-wireless>#wifi_assoclist_table>.tr.placeholder>.td { + right: 33px; + bottom: 33px; + left: 33px; + border-top: thin solid #ddd !important; + } + + #cbi-wireless>#wifi_assoclist_table>.tr.table-titles { + box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; + } + + #cbi-wireless>#wifi_assoclist_table>.tr.table-titles>.th { + border-bottom: thin solid #ddd; + box-shadow: 0 -1px 0 0 #ddd; + } + + #wifi_assoclist_table>.tr>.td[data-title="RX Rate / TX Rate"] { + width: 23rem; + } + + #iptables { + margin: 0; + } + + .Firewall form { + box-shadow: none; + margin: 2rem 2rem 0 0; + padding: 0; + } + + #cbi-firewall-redirect table *, + #cbi-network-switch_vlan table *, + #cbi-firewall-zone table * { + font-size: small; + } + + #cbi-firewall-redirect table input[type="text"], + #cbi-network-switch_vlan table input[type="text"], + #cbi-firewall-zone table input[type="text"] { + width: 5rem; + } + + #cbi-firewall-redirect table select, + #cbi-network-switch_vlan table select, + #cbi-firewall-zone table select { + min-width: 3.5rem; + } + + #cbi-network-switch_vlan .th, + #cbi-network-switch_vlan .td { + flex-basis: 12%; + } + + #applyreboot-container { + margin: 2rem; + } + + #applyreboot-section { + line-height: 300%; + margin: 2rem; + } + + .OpenVPN a { + line-height: initial !important; + } + + .commandbox { + width: 24% !important; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); + margin: 10px 0 0 10px !important; + padding: 0.5rem 1rem; + } + + .commandbox h3 { + line-height: normal !important; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 6px 0 !important; + } + + .commandbox div { + left: auto !important; + } + + .commandbox code { + position: absolute; + overflow: hidden; + max-width: 60%; + margin-left: 4px; + white-space: nowrap; + text-overflow: ellipsis; + padding: 2px 3px; + } + + .commandbox code:hover { + overflow-y: auto; + max-height: 50px; + white-space: normal; + } + + .commandbox p:first-of-type { + margin-top: -6px; + } + + .commandbox p:nth-of-type(2) { + margin-top: 2px; + } + + #command-rc-output .alert-message { + line-height: 1.42857143; + position: absolute; + top: 40px; + right: 32px; + max-width: 40%; + animation: anim-fade-in 1.5s forwards; + word-break: break-word; + opacity: 0; + margin: 0; + } + + .table[width="100%"], + .th[width="100%"], + .td[width="100%"], + .cbi-section-table-row>.cbi-value-field .cbi-dropdown, + .cbi-section-table-row>.cbi-value-field .cbi-input-select, + .cbi-section-table-row>.cbi-value-field .cbi-input-text, + .cbi-section-table-row>.cbi-value-field .cbi-input-password, + .cbi-dropdown[open]>ul.dropdown>li>input.create-item-input:first-child:last-child, + .cbi-dropdown .zonebadge, + .node-main-login>.main>.main-right, + #cbi-firewall-zone .td, + #cbi-network-switch_vlan .td { + width: 100%; + min-width: 60px; + } + + .cbi-rowstyle-2 { + background-color: ; + } + + .pull-right, + .node-main-login>.main form>div:last-child { + float: right; + } + + .pull-left, + .cbi-page-actions .cbi-button-link:first-child { + float: left; + } + + #modemenu>li>a, + .label { + background-color: rgb(104, 104, 104); + color: #fff !important; + font-size: 0.8rem; + font-weight: 700; + text-decoration: none; + text-shadow: none; + text-transform: uppercase; + white-space: nowrap; + padding: 0.3rem 0.8rem; + border-radius: 10px; + } + + [data-indicator="poll-status"][data-style="active"] { + position: absolute; + right: 14px; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/loading.svg) no-repeat; + text-indent: -9999px; + animation: anim-rotate 5s infinite ease-in-out; + background-size: 32px; + } + + [data-indicator="poll-status"][data-style="inactive"] { + position: absolute; + right: 14px; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/pause.svg) no-repeat; + text-indent: -9999px; + background-size: 32px; + } + + + [data-indicator="uci-changes"][data-style="active"] { + position: absolute; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/save.svg) no-repeat; + text-indent: -9999px; + background-size: 32px; + } + + #modemenu>li>a.active, + .notice { + background-color: rgb(66, 66, 66) !important; + } + + #xhr_poll_status, + .cbi-value-field>ul>li { + display: flex; + } + + .alert-message .btn, + .modal .btn { + padding: 0.3rem 0.6rem; + } + + .container .alert, + .container .alert-message, + .cbi-map-descr+fieldset { + margin-top: 1rem; + } + + .main>.main-left>.nav, + .cbi-value-field>ul>li>label { + margin-top: 0.5rem; + } + + .main>.main-left>.nav>li.active>a, + .main>.main-left>.nav>.slide>.slide-menu>.active>a { + color: #fff; + } + + .main>.main-left>.nav>li.active, + .main>.main-left>.nav>.slide>.slide-menu>.active { + + background-color: var(--submenu-bg-hover-active); + border-radius: 10px; + } + + .main>.main-left>.nav>.slide>ul, + .main>.main-left[style*="overflow: hidden"]>.nav>.slide>.menu::before, + .tr.placeholder .td[data-title]::before, + .cbi-dropdown>ul.preview, + .cbi-dropdown>ul>li .hide-close, + .cbi-dropdown[open]>ul.dropdown>li .hide-open, + .hidden, + .showSide, + .node-main-login>.main>.main-left, + [data-page^="admin-system-commands"] .panel-title, + [data-page^="command-cfg"] .mobile-hide, + [data-page^="command-cfg"] .showSide { + display: none; + } + + .main>.main-left>.nav>.slide.active>ul, + .cbi-dropdown[empty]>ul>li, + .cbi-dropdown[optional][open]>ul.dropdown>li[placeholder], + .cbi-dropdown[multiple][open]>ul.dropdown>li>form, + .node-main-login>.main .cbi-value, + #cbi-samba [data-tab="template"] .cbi-value-field, + #cbi-firewall-zone .table, + #cbi-network-switch_vlan .table { + display: block; + } + + .main>.main-left>.nav>li:hover, + .main>.main-left>.nav>.slide>.menu:hover, + .main>.main-left>.nav>.slide>.slide-menu>li:hover { + background: var(--submenu-bg-hover); + border-radius: 10px; + } + + table>tbody>tr>td, + table>tbody>tr>th, + table>tfoot>tr>td, + table>tfoot>tr>th, + table>thead>tr>td, + table>thead>tr>th, + .table>.tbody>.tr>.td, + .table>.tbody>.tr>.th, + .table>.tfoot>.tr>.td, + .table>.tfoot>.tr>.th, + .table>.thead>.tr>.td, + .table>.thead>.tr>.th, + .table>.tr>.td.cbi-value-field, + .table>.tr>.th.cbi-section-table-cell, + .uci-change-list var, + .uci-change-list del, + .uci-change-list ins, + .cbi-section-remove { + padding: 0.5rem; + } + + #cbi-wireless .td, + #cbi-network .tr:first-child>.td, + .table[width="100%"]>.tr:first-child>.td, + [data-page="admin-network-diagnostics"] .tr>.td, + .tr.table-titles>.th, + .tr.cbi-section-table-titles>.th, + #iwsvg, + [data-page="admin-status-realtime-bandwidth"] #bwsvg { + border-top: 0 !important; + } + + .cbi-section-table-row .td, + .center, + .center::before { + text-align: center !important; + } + + div>table>tbody>tr:nth-of-type(2n), + div>.table>.tr:nth-of-type(2n), + .cbi-section .cbi-section-remove:nth-of-type(2n), + .container>.cbi-section .cbi-section-node:nth-of-type(2n), + .cbi-section[id] .cbi-section-remove:nth-of-type(4n + 3), + .cbi-section[id] .cbi-section-node:nth-of-type(4n + 4), + .cbi-tabcontainer>.cbi-value:nth-of-type(2n), + .cbi-rowstyle-1 {} + + .cbi-dropdown>ul>li .hide-open, + .cbi-dropdown[open]>ul.dropdown>li .hide-close { + display: initial; + } + + .network-status-table, + .network-status-table .ifacebox-body>div { + display: flex; + flex-wrap: wrap; + } + + [data-page="admin-network-diagnostics"] .table, + .node-main-login .cbi-section { + box-shadow: none; + } + + @keyframes down { + from { + margin-left: 50%; + opacity: 0; + } + + to { + margin-left: 0%; + opacity: 1; + } + } + + @keyframes anim-rotate { + 0% { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @media screen and (min-height: 585px) { + .node-main-login footer { + position: absolute; + bottom: 0; + width: 100%; + } + } + + @keyframes anim-fade-in { + 100% { + opacity: 1; + } + } + + @media all and (-ms-high-contrast: none) { + .main>.main-left>.nav>.slide>.menu::before { + top: 30.25%; + } + + .main>.main-left>.nav>li:last-child::before { + top: 20%; + } + + .showSide::before { + top: -12px; + } + } + + @media screen and (max-width: 1600px) { + header>.fill>.container { + display: flex; + align-items: center; + margin-top: 0; + } + + header>.fill>.container>#logo { + width: calc(13rem); + } + + .main>.main-left { + width: calc(0% + 13rem); + } + + .main>.main-right { + width: calc(100% - 13rem); + } + + .btn:not(button), + .cbi-button { + font-size: 0.8rem; + padding: 0.3rem 0.6rem; + position: relative; + /*bottom: -0.5rem;*/ + } + + .label, + [data-indicator] { + padding: 0.2rem 0.6rem; + } + + fieldset, + .cbi-section { + padding: 1rem; + } + + .cbi-value-title { + width: 15rem; + padding-right: 0.6rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 22rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 9rem; + } + + .cbi-input-textarea { + font-size: small; + } + + .node-admin-status>.main fieldset li>a { + padding: 0.3rem 0.6rem; + } + } + + @media screen and (max-width: 2000000000px) { + header { + height: 3.5rem; + } + + header>.fill>.container { + margin-top: 0.25rem; + cursor: default; + padding: 0.5rem 1rem; + } + + .main { + top: 3.5rem; + height: calc(100% - 3.5rem); + } + + .main>.main-left { + top: 4.3rem; + width: calc(0% + 13rem); + height: calc(100% - 3.5rem); + } + + .main>.main-right { + width: calc(100% - 13rem); + } + + .tabs>li>a, + .cbi-tabmenu>li>a { + padding: 0.2rem 0.5rem; + } + + .cbi-section>h3:first-child, + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + + table { + font-size: 0.7rem !important; + width: 100% !important; + } + + .table .cbi-input-text { + width: 100%; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 19rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 4rem; + } + + .main>.main-left>.nav>li, + .main>.main-left>.nav>li a, + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + font-size: 1rem; + color: #fff; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a { + font-size: 0.7rem; + color: #fff; + } + + #modal_overlay { + top: 3.5rem; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { + display: block; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), + [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), + [data-page="admin-network-hosts"] .table, + [data-page="admin-network-routes"] .table { + overflow-y: visible; + } + + .commandbox { + width: 32% !important; + } + } + + @media screen and (max-width: 1152px) { + header>.fill>.container>.brand { + position: relative; + } + + html, + .main { + overflow-y: visible; + } + + .main>.loading>span { + top: 25%; + } + + .main>.main-left { + position: fixed; + z-index: 100; + visibility: hidden; + } + + .main>.main-right { + width: 100%; + } + + .showSide { + position: -webkit-sticky; + position: sticky; + top: 0rem; + display: inline-flex; + align-items: center; + height: 100%; + margin-right: 0.7rem; + cursor: pointer; + } + + body:not(.logged-in) .showSide { + visibility: hidden; + width: 0; + margin: 0; + } + + .cbi-value-title { + width: 12rem; + padding-right: 1rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"] { + width: 16rem; + min-width: 16rem; + color: rgb(255, 255, 255); + } + + .cbi-value input[type="password"], + .cbi-value input[name^="pw"], + .cbi-value input[data-update="change"]:nth-child(2) { + width: 13rem !important; + min-width: 13rem; + color: #fff; + } + + #diag-rc-output>pre, + #command-rc-output>pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1rem; + } + + .Interfaces .table { + overflow-x: hidden; + } + + #packages.table { + display: grid; + } + + .tr { + display: flex; + flex-direction: row; + flex-wrap: wrap; + } + + .Overview .table[width="100%"]>.tr { + flex-wrap: nowrap; + } + + .tr.placeholder { + border-bottom: thin solid #ddd; + } + + .tr.placeholder>.td, + #cbi-firewall .tr>.td, + #cbi-network .tr:nth-child(2)>.td, + .cbi-section #wifi_assoclist_table .tr>.td { + border-top: 0; + } + + .th, + .td { + display: inline-block; + align-self: flex-start; + flex: 2 2 25%; + text-overflow: ellipsis; + word-wrap: break-word; + } + + .td select, + .td input[type="text"] { + width: 100%; + word-wrap: normal; + } + + .td [data-dynlist]>input, + .td input.cbi-input-password { + width: calc(100% - 1.5rem); + } + + .td[data-type="button"], + .td[data-type="fvalue"] { + flex: 1 1 12.5%; + text-align: left; + } + + .th.cbi-value-field, + .td.cbi-value-field, + .th.cbi-section-table-cell, + .td.cbi-section-table-cell { + flex-basis: auto; + padding-top: 1rem; + } + + .cbi-section-table-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + } + + .td.cbi-value-field, + .cbi-section-table-cell { + display: inline-block; + flex: 10 10 auto; + flex-basis: 50%; + text-align: center; + } + + .td.cbi-section-actions { + vertical-align: bottom; + } + + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: 0.9rem; + display: block; + flex: 1 1 100%; + border-bottom: thin solid rgba(0, 0, 0, 0.26); + background: #90c0e0; + } + + .cbi-button+.cbi-button { + margin-left: 0; + } + + .td.cbi-section-actions>*>*, + .td.cbi-section-actions>*>form>* { + margin: 2.1px 3px; + } + + .Firewall form { + position: static !important; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + margin: 0 0 2rem; + padding: 2rem; + } + + .Firewall form input { + width: 100% !important; + margin: 1rem 0 0; + } + + .Firewall .center, + .Firewall .center::before { + text-align: left !important; + } + + .commandbox { + width: 100% !important; + margin-left: 0 !important; + } + + .tr.table-titles, + .tr.cbi-section-table-titles, + .tr.cbi-section-table-descr { + display: none; + } + + .node-main-login>.main .cbi-value-title, + .td[data-title], + [data-page^="admin-status-realtime"] .td[id] { + text-align: left; + color: #ffffff; + } + + .table, + .td[data-title]::before { + display: block; + } + } + + @media screen and (max-width: 600px) { + header>.fill>.container>#logo { + padding: 1rem; + margin: 0; + position: absolute; + left: 50%; + top: 0; + width: 100px; + transform: translateX(-50%); + } + + header>.fill>.container>#logo>img { + width: 100%; + margin-top: 0; + } + + .cbi-progressbar::after { + font-size: 0.95em; + line-height: 1.5; + } + + fieldset, + .cbi-section { + margin: 1rem 0 0; + } + + } + + #maincontent>.container { + margin: 0 0.5rem 1.5rem; + } + + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + font-size: 1.1rem; + } + + .cbi-value-title { + display: block; + min-width: 0 !important; + text-align: left; + margin: 0.5rem 0; + } + + .cbi-value>.cbi-value-field { + display: inline-block; + } + + .tabs>li>a, + .cbi-tabmenu>li>a { + padding: 0.2rem 0.3rem; + } + + .cbi-page-actions>.cbi-button { + margin-top: 0.2rem; + } + + .node-main-login>.main .container { + margin: 2rem 1.2rem 1.5rem !important; + padding: 0.3rem 1.7rem 2rem 1.6rem; + } + + .node-main-login>.main .cbi-value { + padding: 0; + } + + .node-main-login>.main form>div:last-child { + margin-top: 2rem; + } + + .node-main-login>.main .cbi-value-title { + font-size: 1.2rem; + width: 100% !important; + } + + .node-main-login>.main fieldset { + margin: 0; + padding: 0.5rem; + } + + .commandbox p:first-of-type { + margin-top: -8px; + } + + #syslog, + #diag-rc-output>pre, + #command-rc-output>pre, + [data-page="admin-services-wol"] .notice code { + font-size: 0.8rem !important; + } + + h2 {} + + .cbi-section>h3:first-child, + .panel-title { + font-size: 1.2rem; + padding-bottom: 1rem; + } + + .node-system-packages>.main .cbi-value.cbi-value-last>div { + width: 100% !important; + } + + .th, + .td { + flex-basis: 50%; + color: #fff; + } + + .tr>.td[data-title="Sensor"] { + text-align: center; + } + + .tr>.td[data-title="Temperature"] { + text-align: center; + } + + .tr>.td[data-title="Hostname"] { + text-align: center; + } + + .tr>.td[data-title="IPv4 address"] { + text-align: center; + } + + .tr>.td[data-title="MAC address"] { + text-align: center; + } + + .tr>.td[data-title="Lease time remaining"] { + text-align: center; + } + + + .td.cbi-value-field { + flex-basis: 100%; + } + + .td.cbi-value-field[data-type="button"], + .td.cbi-value-field[data-type="fvalue"] { + flex-basis: 25%; + text-align: left; + } + + td>.ifacebadge, + .td>.ifacebadge { + font-size: 0.62rem; + } + + #cbi-wireless>#wifi_assoclist_table .td { + overflow: hidden; + } + + #cbi-wireless>.cbi-section-node .td, + .Interfaces .td.cbi-section-actions { + text-align: center !important; + } + + .cbi-modal { + padding: 0.5rem; + } + + .cbi-modal .cbi-value { + padding: 0 0 0.25rem; + } + + .cbi-modal [data-tab-title] { + padding: 0 0.25rem !important; + } + + [data-tab-title] { + padding: 0 0.5rem !important; + } + + body, + code { + font-size: 0.8rem; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a, + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: + } + + .cbi-value-title, + .cbi-value-description, + .cbi-value-field, + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .node-system-packages>.main .cbi-value .cbi-value-field input { + width: 30%; + color: #fff; + } + + .cbi-page-actions>div>input, + .mobile-hide, + [data-page="admin-status-processes"] .td[data-title="Hang Up"]::before, + [data-page="admin-status-processes"] .td[data-title="Terminate"]::before, + [data-page="admin-status-processes"] .td[data-title="Kill"]::before, + .hide-sm, + .hide-xs:not([data-title="MAC-Address"]) { + display: none; + } + + .tabs>li>a, + select, + input { + font-size: 0.9rem; + } + + @media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + + ::-webkit-scrollbar-thumb { + background: #9e9e9e; + } + + ::-webkit-scrollbar-thumb:hover { + background: #757575; + } + + ::-webkit-scrollbar-thumb:active { + background: #424242; + } + } diff --git a/luci-theme-alpha/luasrc/gaya/icon/arrow.svg b/luci-theme-alpha/luasrc/gaya/icon/arrow.svg new file mode 100644 index 000000000..be864c5ac --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/icon/loading.svg b/luci-theme-alpha/luasrc/gaya/icon/loading.svg new file mode 100644 index 000000000..0112b31a4 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/loading.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/logout.svg b/luci-theme-alpha/luasrc/gaya/icon/logout.svg new file mode 100644 index 000000000..78c0fe42b --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/logout.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/menu_icon.svg b/luci-theme-alpha/luasrc/gaya/icon/menu_icon.svg new file mode 100644 index 000000000..1833cee96 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/menu_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/interface.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/interface.png new file mode 100644 index 000000000..d5888cca9 Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/interface.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/modem.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/modem.png new file mode 100644 index 000000000..aa2d96a61 Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/modem.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/nas.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/nas.png new file mode 100644 index 000000000..de168033e Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/nas.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/neko.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/neko.png new file mode 100644 index 000000000..1fbab6bdd Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/neko.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/oc.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/oc.png new file mode 100644 index 000000000..7a7ded8b8 Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/oc.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/status.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/status.png new file mode 100644 index 000000000..1da03903e Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/status.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/terminal.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/terminal.png new file mode 100644 index 000000000..4594e8c0c Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/terminal.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/pause.svg b/luci-theme-alpha/luasrc/gaya/icon/pause.svg new file mode 100644 index 000000000..862a712db --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/pause.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/save.svg b/luci-theme-alpha/luasrc/gaya/icon/save.svg new file mode 100644 index 000000000..690905dbd --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/save.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/app.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/app.svg new file mode 100644 index 000000000..366ace333 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/app.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/docker.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/docker.svg new file mode 100644 index 000000000..c28d199d9 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/docker.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/istore.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/istore.svg new file mode 100644 index 000000000..289c42094 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/istore.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/modem.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/modem.svg new file mode 100644 index 000000000..c270cbfe3 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/modem.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/nas.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/nas.svg new file mode 100644 index 000000000..273fadb71 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/nas.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/network.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/network.svg new file mode 100644 index 000000000..5131c1704 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/network.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/services.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/services.svg new file mode 100644 index 000000000..5280c990c --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/services.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/status.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/status.svg new file mode 100644 index 000000000..f1e3c2c8f --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/status.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/system.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/system.svg new file mode 100644 index 000000000..ba932d479 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/system.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/vpn.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/vpn.svg new file mode 100644 index 000000000..0f48cba43 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/vpn.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/style/brand.png b/luci-theme-alpha/luasrc/style/brand.png new file mode 100644 index 000000000..243457d8c Binary files /dev/null and b/luci-theme-alpha/luasrc/style/brand.png differ diff --git a/luci-theme-alpha/luasrc/style/catatan.txt b/luci-theme-alpha/luasrc/style/catatan.txt new file mode 100644 index 000000000..c74e132ee --- /dev/null +++ b/luci-theme-alpha/luasrc/style/catatan.txt @@ -0,0 +1 @@ +buat tambah login page disini diff --git a/luci-theme-alpha/luasrc/style/indo-wrt.png b/luci-theme-alpha/luasrc/style/indo-wrt.png new file mode 100644 index 000000000..fde99ef17 Binary files /dev/null and b/luci-theme-alpha/luasrc/style/indo-wrt.png differ diff --git a/luci-theme-alpha/luasrc/style/style.css b/luci-theme-alpha/luasrc/style/style.css new file mode 100644 index 000000000..a162c1051 --- /dev/null +++ b/luci-theme-alpha/luasrc/style/style.css @@ -0,0 +1,416 @@ +/*-------------------- +catatan usahakan untuk mengganti bg pakai format png, kalo jpg ganti aja di bagian body, sesuaikan aja nama formatnya +---------------------*/ +*, +*::before, +*::after { + box-sizing: border-box; +} + +body, +html { + height: 100%; + font-family: 'Segoe UI', Arial, Helvetica, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; +} + + +/*-------------------- +Text +---------------------*/ + +h2, +h3 { + font-size: 16px; + letter-spacing: -1px; + line-height: 20px; +} + +h2 { + color: #fff; + text-align: center; +} + +h3 { + color: #032942; + text-align: right; +} + +/*-------------------- +Icons +---------------------*/ +.i { + width: 20px; + height: 20px; +} + +.i-login { + margin: 13px 0px 0px 15px; + position: relative; + float: left; + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDQxNi4yMjkgNDE2LjIyOSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDE2LjIyOSA0MTYuMjI5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTQwMy43MjksMjkuNjVINzEuODAyYy02LjkwMywwLTEyLjUsNS41OTctMTIuNSwxMi41djg2LjM2M2MwLDYuOTAzLDUuNTk3LDEyLjUsMTIuNSwxMi41czEyLjUtNS41OTcsMTIuNS0xMi41VjU0LjY1ICAgIGgzMDYuOTI3djMwNi45MjhIODQuMzAydi03My44NjFjMC02LjkwMy01LjU5Ny0xMi41LTEyLjUtMTIuNXMtMTIuNSw1LjU5Ny0xMi41LDEyLjV2ODYuMzYxYzAsNi45MDMsNS41OTcsMTIuNSwxMi41LDEyLjUgICAgaDMzMS45MjdjNi45MDIsMCwxMi41LTUuNTk3LDEyLjUtMTIuNVY0Mi4xNUM0MTYuMjI5LDM1LjI0Nyw0MTAuNjMxLDI5LjY1LDQwMy43MjksMjkuNjV6IiBmaWxsPSIjODczMTRlIi8+CgkJPHBhdGggZD0iTTE4NS40MTcsMjg3LjgxMWMwLDUuMDU3LDMuMDQ1LDkuNjEzLDcuNzE2LDExLjU1YzEuNTQ3LDAuNjQyLDMuMTcsMC45NSw0Ljc4MSwwLjk1YzMuMjUzLDAsNi40NTEtMS4yNyw4Ljg0Mi0zLjY2ICAgIGw3OS42OTctNzkuNjk3YzIuMzQ0LTIuMzQ0LDMuNjYtNS41MjMsMy42Ni04LjgzOWMwLTMuMzE2LTEuMzE2LTYuNDk1LTMuNjYtOC44MzlsLTc5LjY5Ny03OS42OTcgICAgYy0zLjU3NS0zLjU3NS04Ljk1MS00LjY0Ni0xMy42MjMtMi43MWMtNC42NzEsMS45MzYtNy43MTYsNi40OTMtNy43MTYsMTEuNTQ5djY3LjE5N0gxMi41Yy02LjkwMywwLTEyLjUsNS41OTctMTIuNSwxMi41ICAgIGMwLDYuOTAzLDUuNTk3LDEyLjUsMTIuNSwxMi41aDE3Mi45MTdWMjg3LjgxMUwxODUuNDE3LDI4Ny44MTF6IE0yMTAuNDE3LDE1OC41OTRsNDkuNTIxLDQ5LjUybC00OS41MjEsNDkuNTIxVjE1OC41OTR6IiBmaWxsPSIjODczMTRlIi8+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==); + background-size: 18px 18px; + background-repeat: no-repeat; + background-position: center; +} + +.i-more { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDYxMiA2MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYxMiA2MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8ZyBpZD0ibW9yZSI+CgkJPGc+CgkJCTxwYXRoIGQ9Ik03Ni41LDIyOS41QzM0LjMsMjI5LjUsMCwyNjMuOCwwLDMwNnMzNC4zLDc2LjUsNzYuNSw3Ni41UzE1MywzNDguMiwxNTMsMzA2UzExOC43LDIyOS41LDc2LjUsMjI5LjV6IE03Ni41LDM0NC4yICAgICBjLTIxLjEsMC0zOC4yLTE3LjEwMS0zOC4yLTM4LjJjMC0yMS4xLDE3LjEtMzguMiwzOC4yLTM4LjJzMzguMiwxNy4xLDM4LjIsMzguMkMxMTQuNywzMjcuMSw5Ny42LDM0NC4yLDc2LjUsMzQ0LjJ6ICAgICAgTTUzNS41LDIyOS41Yy00Mi4yLDAtNzYuNSwzNC4zLTc2LjUsNzYuNXMzNC4zLDc2LjUsNzYuNSw3Ni41UzYxMiwzNDguMiw2MTIsMzA2UzU3Ny43LDIyOS41LDUzNS41LDIyOS41eiBNNTM1LjUsMzQ0LjIgICAgIGMtMjEuMSwwLTM4LjItMTcuMTAxLTM4LjItMzguMmMwLTIxLjEsMTcuMTAxLTM4LjIsMzguMi0zOC4yczM4LjIsMTcuMSwzOC4yLDM4LjJDNTczLjcsMzI3LjEsNTU2LjYsMzQ0LjIsNTM1LjUsMzQ0LjJ6ICAgICAgTTMwNiwyMjkuNWMtNDIuMiwwLTc2LjUsMzQuMy03Ni41LDc2LjVzMzQuMyw3Ni41LDc2LjUsNzYuNXM3Ni41LTM0LjMsNzYuNS03Ni41UzM0OC4yLDIyOS41LDMwNiwyMjkuNXogTTMwNiwzNDQuMiAgICAgYy0yMS4xLDAtMzguMi0xNy4xMDEtMzguMi0zOC4yYzAtMjEuMSwxNy4xLTM4LjIsMzguMi0zOC4yYzIxLjEsMCwzOC4yLDE3LjEsMzguMiwzOC4yQzM0NC4yLDMyNy4xLDMyNy4xLDM0NC4yLDMwNiwzNDQuMnoiIGZpbGw9IiNkZjQwNWEiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-save { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDYxMiA2MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYxMiA2MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8ZyBpZD0idGljayI+CgkJPGc+CgkJCTxwYXRoIGQ9Ik00MzYuNywxOTYuNzAxTDI1OC4xODgsMzc1LjIxM2wtODIuODY5LTgyLjg4N2MtNy4yODctNy4yODctMTkuMTI1LTcuMjg3LTI2LjQxMiwwcy03LjI4NywxOS4xMjUsMCwyNi40MTIgICAgIGw5My44MDgsOTMuODA4YzAuNjMxLDAuODk5LDEuMDE0LDEuOTMyLDEuODE3LDIuNzM1YzMuNzY4LDMuNzY4LDguNzIxLDUuNTA4LDEzLjY1NSw1LjM3NGM0LjkzNCwwLjExNSw5LjkwNy0xLjYwNiwxMy42NzQtNS4zNzQgICAgIGMwLjgwMy0wLjgwNCwxLjE4Ni0xLjgzNiwxLjgxNy0yLjczNWwxODkuNDM0LTE4OS40MzNjNy4yODYtNy4yODcsNy4yODYtMTkuMTI1LDAtMjYuNDEyICAgICBDNDU1LjgwNiwxODkuNDE0LDQ0My45ODcsMTg5LjQxNCw0MzYuNywxOTYuNzAxeiBNMzA2LDBDMTM2Ljk5MiwwLDAsMTM2Ljk5MiwwLDMwNnMxMzYuOTkyLDMwNiwzMDYsMzA2ICAgICBjMTY4Ljk4OCwwLDMwNi0xMzYuOTkyLDMwNi0zMDZTNDc1LjAwOCwwLDMwNiwweiBNMzA2LDU3My43NUMxNTguMTI1LDU3My43NSwzOC4yNSw0NTMuODc1LDM4LjI1LDMwNiAgICAgQzM4LjI1LDE1OC4xMjUsMTU4LjEyNSwzOC4yNSwzMDYsMzguMjVjMTQ3Ljg3NSwwLDI2Ny43NSwxMTkuODc1LDI2Ny43NSwyNjcuNzVDNTczLjc1LDQ1My44NzUsNDUzLjg3NSw1NzMuNzUsMzA2LDU3My43NXoiIGZpbGw9IiMyMGMxOTgiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-warning { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMi44MTYgNjEyLjgxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjEyLjgxNiA2MTIuODE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCI+CjxnPgoJPHBhdGggZD0iTTMwNi40MDgsMEMxMzcuMzY4LDAsMC4zNzEsMTM2Ljk5NywwLjM3MSwzMDYuMDM3czEzNi45OTcsMzA2Ljc3OSwzMDYuMDM3LDMwNi43NzlzMzA2LjAzNy0xMzcuODEzLDMwNi4wMzctMzA2LjAzNyAgIEM2MTIuNDQ1LDEzNy43MzksNDc1LjQ0OCwwLDMwNi40MDgsMHogTTMwNi40MDgsNTgzLjE0N2MtMTUyLjIwMywwLTI3Ni4zNjgtMTI0LjE2NS0yNzYuMzY4LTI3Ni4zNjggICBTMTU0LjIwNSwyOS41OTUsMzA2LjQwOCwyOS41OTVTNTgyLjc3NiwxNTMuNzYsNTgyLjc3NiwzMDYuNzc5UzQ1OC42MTEsNTgzLjE0NywzMDYuNDA4LDU4My4xNDd6IE0zMjEuNjEzLDQzMS43NiAgIGMwLDguODI3LTcuMTk1LDE2LjAyMS0xNi4wMjEsMTYuMDIxYy04LjgyNywwLTE2LjAyMS03LjE5NS0xNi4wMjEtMTYuMDIxYzAtOC44MjcsNy4xOTUtMTYuMDIxLDE2LjAyMS0xNi4wMjEgICBTMzIxLjYxMyw0MjIuOTM0LDMyMS42MTMsNDMxLjc2eiBNMjkwLjM4NywzNTMuMjExdi0xODAuMjRjMC04LjAxMSw2LjM3OS0xNC4zOSwxNC4zOS0xNC4zOWM4LjAxMSwwLDE0LjM5LDYuMzc5LDE0LjM5LDE0LjM5ICAgdjE4MC4yNGMwLDguMDExLTYuMzc5LDE0LjM5LTE0LjM5LDE0LjM5QzI5Ni43NjYsMzY4LjQ5MSwyOTAuMzg3LDM2MS4yMjIsMjkwLjM4NywzNTMuMjExeiIgZmlsbD0iI2Y1ZDg3OCIvPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-close { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMi40NDUgNjEyLjQ0NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjEyLjQ0NSA2MTIuNDQ1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCI+CjxnPgoJPHBhdGggZD0iTTUyMi42NDIsODkuODA0QzQ2NC45LDMyLjA2MiwzODguMDExLDAsMzA2LjIyMywwUzE0Ny41NDUsMzIuMDYyLDg5LjgwNCw4OS44MDQgICBjLTExOS40MTYsMTE5LjQxNi0xMTkuNDE2LDMxMy40MjIsMCw0MzIuODM4YzU3Ljc0MSw1Ny43NDEsMTM0LjYzMSw4OS44MDQsMjE2LjQxOSw4OS44MDRzMTU4LjY3OC0zMi4wNjIsMjE2LjQxOS04OS44MDQgICBDNjQyLjA1OCw0MDMuMjI1LDY0Mi4wNTgsMjA5LjIyLDUyMi42NDIsODkuODA0eiBNNTAxLjc4Nyw1MDEuNzg3Yy01Mi4xMDEsNTIuMTAxLTEyMS43OTEsODAuOTcyLTE5NS41NjQsODAuOTcyICAgcy0xNDMuNDYzLTI4Ljg3MS0xOTUuNTY0LTgwLjk3MlMyOS42ODcsMzc5Ljk5NSwyOS42ODcsMzA2LjIyM3MyOC44NzEtMTQzLjQ2Myw4MC45NzItMTk1LjU2NHMxMjEuODY2LTgwLjk3MiwxOTUuNTY0LTgwLjk3MiAgIHMxNDMuNDYzLDI4Ljg3MSwxOTUuNTY0LDgwLjk3MnM4MC45NzIsMTIxLjg2Niw4MC45NzIsMTk1LjU2NFM1NTMuODg3LDQ0OS42ODYsNTAxLjc4Nyw1MDEuNzg3eiBNMzk5LjIxOCwyMzQuODk5bC03NC41MTUsNzQuNTE1ICAgbDc0LjUxNSw3NC41MTVjNS42NDEsNS42NDEsNS42NDEsMTUuMjE1LDAsMjAuODU1Yy0zLjE5MSwzLjE5MS02LjM4Myw0LjAwOC0xMC4zOTEsNC4wMDhjLTQuMDA4LDAtNy4xOTktMS42MzMtMTAuMzktNC4wMDggICBsLTc0LjU4OS03NC41MTVsLTc0LjU4OSw3NC41MTVjLTMuMTkxLDMuMTkxLTYuMzgzLDQuMDA4LTEwLjM5LDQuMDA4cy03LjE5OS0xLjYzMy0xMC4zOS00LjAwOCAgIGMtNS42NDEtNS42NDEtNS42NDEtMTUuMjE1LDAtMjAuODU1bDc0LjUxNS03NC41MTVsLTc0LjUxNS03NC41MTVjLTUuNjQxLTUuNjQxLTUuNjQxLTE1LjIxNSwwLTIwLjg1NSAgIGM1LjY0MS01LjY0MSwxNS4yMTUtNS42NDEsMjAuODU1LDBsNzQuNTE1LDc0LjUxNWw3NC41MTUtNzQuNTE1YzUuNjQxLTUuNjQxLDE1LjIxNS01LjY0MSwyMC44NTUsMCAgIEM0MDQuODU4LDIxOS42ODUsNDA0Ljg1OCwyMjguNDQyLDM5OS4yMTgsMjM0Ljg5OXoiIGZpbGw9IiNmNTVhNGUiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-left { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDQxNC4yOTggNDE0LjI5OSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDE0LjI5OCA0MTQuMjk5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTMuNjYzLDQxMC42MzdjMi40NDEsMi40NCw1LjY0LDMuNjYxLDguODM5LDMuNjYxYzMuMTk5LDAsNi4zOTgtMS4yMjEsOC44MzktMy42NjFsMTg1LjgwOS0xODUuODFsMTg1LjgxLDE4NS44MTEgICBjMi40NCwyLjQ0LDUuNjQxLDMuNjYxLDguODQsMy42NjFjMy4xOTgsMCw2LjM5Ny0xLjIyMSw4LjgzOS0zLjY2MWM0Ljg4MS00Ljg4MSw0Ljg4MS0xMi43OTYsMC0xNy42NzlsLTE4NS44MTEtMTg1LjgxICAgbDE4NS44MTEtMTg1LjgxYzQuODgxLTQuODgyLDQuODgxLTEyLjc5NiwwLTE3LjY3OGMtNC44ODItNC44ODItMTIuNzk2LTQuODgyLTE3LjY3OSwwbC0xODUuODEsMTg1LjgxTDIxLjM0LDMuNjYzICAgYy00Ljg4Mi00Ljg4Mi0xMi43OTYtNC44ODItMTcuNjc4LDBjLTQuODgyLDQuODgxLTQuODgyLDEyLjc5NiwwLDE3LjY3OGwxODUuODEsMTg1LjgwOUwzLjY2MywzOTIuOTU5ICAgQy0xLjIxOSwzOTcuODQxLTEuMjE5LDQwNS43NTYsMy42NjMsNDEwLjYzN3oiIGZpbGw9IiM4NzMxNGUiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K); + background-size: 16px 16px; + background-repeat: no-repeat; + background-position: center; +} + +/*-------------------- +Login Box +---------------------*/ + +.box { + width: 330px; + position: absolute; + top: 50%; + left: 50%; + + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.box-form { + width: 320px; + position: relative; + z-index: 1; +} + +.box-login-tab { + width: 50%; + height: 40px; + background: #00000044; + position: relative; + float: left; + z-index: 1; + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; + + -webkit-transform: perspective(5px) rotateX(0.93deg) translateZ(-1px); + transform: perspective(5px) rotateX(0.93deg) translateZ(-1px); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + + -webkit-box-shadow: 15px -15px 30px rgba(0, 0, 0, 0.32); + -moz-box-shadow: 15px -15px 30px rgba(0, 0, 0, 0.32); + box-shadow: 15px -15px 30px rgba(0, 0, 0, 0.32); +} + +.box-login-title { + width: 35%; + height: 40px; + position: absolute; + float: left; + z-index: 2; +} + +.box-login { + position: relative; + top: -4px; + width: 320px; + background: #00000044; + text-align: center; + overflow: hidden; + z-index: 2; + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + -webkit-border-radius: 20px: -moz-border-radius=20px; + border-radius: 20px; + -moz-box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); + box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); +} + +.box-info { + width: 260px; + top: 60px; + position: absolute; + right: -5px; + padding: 15px 15px 15px 30px; + background-color: rgba(255, 255, 255, 0.6); + border: 1px solid rgba(255, 255, 255, 0.2); + z-index: 0; + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + + -webkit-box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); + -moz-box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); + box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); +} + +.line-wh { + width: 100%; + height: 1px; + top: 0px; + margin: 12px auto; + position: relative; + border-top: 1px solid rgba(255, 255, 255, 0.3); +} + +/*-------------------- +Form +---------------------*/ + +a { + text-decoration: none; +} + +button:focus { + outline: 0; +} + +.b { + height: 24px; + line-height: 24px; + background-color: transparent; + border: none; + cursor: pointer; +} + +.b-form { + opacity: 0.5; + margin: 10px 20px; + float: right; +} + +.b-info { + opacity: 0.5; + float: left; +} + +.b-form:hover, +.b-info:hover { + opacity: 1; +} + +.b-support, +.b-cta { + width: 100%; + padding: 0px 15px; + font-family: 'Quicksand', sans-serif; + font-weight: 700; + letter-spacing: -1px; + font-size: 16px; + line-height: 32px; + cursor: pointer; + + -webkit-border-radius: 16px; + -moz-border-radius: 16px; + border-radius: 16px; +} + +.b-support { + border: #87314e 1px solid; + background-color: transparent; + color: #87314e; + margin: 6px 0; +} + +.b-cta { + border: #df405a 1px solid; + background-color: #df405a; + color: #fff; +} + +.b-support:hover, +.b-cta:hover { + color: #fff; + background-color: #87314e; + border: #87314e 1px solid; +} + +.fieldset-body { + display: table; +} + +.fieldset-body p { + width: 100%; + display: inline-table; + padding: 5px 20px; + margin-bottom: 2px; +} + +label { + float: left; + width: 100%; + top: 0px; + color: #fff; + font-size: 13px; + font-weight: 700; + text-align: center; + line-height: 2.5; +} + +label.checkbox { + float: left; + padding: 5px 20px; + line-height: 1.7; +} + +input[type=text], +input[type=password] { + width: auto; + height: 32px; + padding: 0px 10px; + background-color: rgb(0 0 0 / 28%); + border: none; + display: inline; + color: #bdbdbd; + font-size: 16px; + font-weight: 400; + float: none; + border-radius: 10px; +} + +input[type=text]:focus, +input[type=password]:focus { + background-color: #f8f8c6; + outline: none; +} + +input[type=submit] { + width: 100%; + height: 48px; + margin-top: 24px; + padding: 0px 20px; + font-family: 'Segoe UI', Arial, Helvetica, sans-serif; + font-weight: 700; + font-size: 18px; + color: #fff; + line-height: 40px; + text-align: center; + background-color: #0c5091; + border: 1px #075fa7 solid; + opacity: 1; + cursor: pointer; +} + +input[type=submit]:hover { + background-color: #df405a; + border: 1px #df405a solid; +} + +input[type=submit]:focus { + outline: none; +} + +p.field span.i { + width: 24px; + height: 24px; + float: right; + position: relative; + margin-top: -26px; + right: 2px; + z-index: 2; + display: none; + + -webkit-animation: bounceIn 0.6s linear; + -moz-animation: bounceIn 0.6s linear; + -o-animation: bounceIn 0.6s linear; + animation: bounceIn 0.6s linear; +} + +/*-------------------- +Transitions +---------------------*/ + +.box-form, +.box-info, +.b, +.b-support, +.b-cta, +input[type=submit], +p.field span.i { + + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + -ms-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; +} + +/*-------------------- +Credits +---------------------*/ + +.icon-credits { + width: 100%; + position: absolute; + bottom: 4px; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; + font-size: 12px; + color: rgba(255, 255, 255, 0.1); + text-align: center; + z-index: -1; +} + +img.tengah { + display: block; + margin-left: auto; + margin-right: auto; + text-align: center; + padding: 20px; + text-decoration: none; + width: 200px; +} + +img.bawah { + position: absolute; + bottom: 0; + left: 50%; + transform: translateX(-50%); + padding: 2rem; +} + +.icon-credits a { + text-decoration: none; + color: rgba(255, 255, 255, 0.2); +} \ No newline at end of file diff --git a/luci-theme-alpha/mobileview1.png b/luci-theme-alpha/mobileview1.png new file mode 100644 index 000000000..b4027a2a5 Binary files /dev/null and b/luci-theme-alpha/mobileview1.png differ diff --git a/luci-theme-alpha/mobileview2.png b/luci-theme-alpha/mobileview2.png new file mode 100644 index 000000000..cc7a2e59c Binary files /dev/null and b/luci-theme-alpha/mobileview2.png differ diff --git a/luci-theme-alpha/mobileview3.png b/luci-theme-alpha/mobileview3.png new file mode 100644 index 000000000..0bfac0c98 Binary files /dev/null and b/luci-theme-alpha/mobileview3.png differ diff --git a/luci-theme-alpha/root/etc/config/alpha b/luci-theme-alpha/root/etc/config/alpha new file mode 100644 index 000000000..4e9a19522 --- /dev/null +++ b/luci-theme-alpha/root/etc/config/alpha @@ -0,0 +1,7 @@ + +config alpha 'config' + option nav_01 '/cgi-bin/luci/admin/status/overview' + option nav_02 '/cgi-bin/luci/admin/services/ttyd' + option nav_03 '/cgi-bin/luci/admin/network/network' + option blur '20' + option color '#2222359a' diff --git a/luci-theme-alpha/ss1.png b/luci-theme-alpha/ss1.png new file mode 100644 index 000000000..075f22d11 Binary files /dev/null and b/luci-theme-alpha/ss1.png differ diff --git a/luci-theme-alpha/ss2.png b/luci-theme-alpha/ss2.png new file mode 100644 index 000000000..d871e9e09 Binary files /dev/null and b/luci-theme-alpha/ss2.png differ diff --git a/luci-theme-alpha/ss3.png b/luci-theme-alpha/ss3.png new file mode 100644 index 000000000..542ec2e5e Binary files /dev/null and b/luci-theme-alpha/ss3.png differ diff --git a/luci-theme-alpha/template/footer.htm b/luci-theme-alpha/template/footer.htm new file mode 100644 index 000000000..0166861db --- /dev/null +++ b/luci-theme-alpha/template/footer.htm @@ -0,0 +1,108 @@ +<%# + Alpha os is made from me for all .. especially for indo wrt members and fan of OpenWrt or DBAI Community + luci-theme-alpha + Copyright 2024 derisamedia + Have a bug? Please create an issue here on GitHub! + + luci-theme-material + Copyright 2015 Lutty Yang + + luci-theme-bootstrap: + Copyright 2008 Steven Barth + Copyright 2008 Jo-Philipp Wich + Copyright 2012 David Menting + + MUI: + https://github.com/muicss/mui + + Licensed to the public under the Apache License 2.0 +-%> +<% +local ver = require "luci.version" +local uci = require "luci.model.uci".cursor() +local config = uci:get_all("alpha", "config") +local icon = { + ['/cgi-bin/luci/admin/status/overview'] = '/gaya/icon/navbar/status.png', + ['/cgi-bin/luci/admin/services/ttyd'] = '/gaya/icon/navbar/terminal.png', + ['/cgi-bin/luci/admin/services/openclash'] = '/gaya/icon/navbar/oc.png', + ['/cgi-bin/luci/admin/nas/tinyfm'] = '/gaya/icon/navbar/nas.png', + ['/cgi-bin/luci/admin/modem/main'] = '/gaya/icon/navbar/modem.png', + ['/cgi-bin/luci/admin/network/network'] = '/gaya/icon/navbar/interface.png', + ['/cgi-bin/luci/admin/services/neko'] = '/gaya/icon/navbar/neko.png' +} + +local function getLink(nav) + local link = config[nav] + return (link and link ~= "none") and link or nil +end + +local num_links = 0 +for i = 1, 6 do + local nav_key = 'nav_0' .. i + local link = getLink(nav_key) + if link then + num_links = num_links + 1 + end +end + +local link_width = string.format("calc(100%% / %d)", num_links) +local blur_value = tonumber(config.blur) +local link_blur = string.format("blur(%dpx)", blur_value) +local background_color = config.color +%> + + + +
    + +
    + + +
    + + + + diff --git a/luci-theme-alpha/template/header.htm b/luci-theme-alpha/template/header.htm new file mode 100644 index 000000000..53e5aac9f --- /dev/null +++ b/luci-theme-alpha/template/header.htm @@ -0,0 +1,96 @@ +<%# + Alpha os is made from me for all .. especially for indo wrt members and fan of OpenWrt or DBAI Community + luci-theme-alpha + Copyright 2022 derisamedia + Have a bug? Please create an issue here on GitHub! + + luci-theme-material + Copyright 2015-2017 Lutty Yang + + luci-theme-bootstrap: + Copyright 2008 Steven Barth + Copyright 2008-2016 Jo-Philipp Wich + Copyright 2012 David Menting + + MUI: + https://github.com/muicss/mui + + Licensed to the public under the Apache License 2.0 +-%> + +<% + local sys = require "luci.sys" + local util = require "luci.util" + local http = require "luci.http" + local disp = require "luci.dispatcher" + local ver = require "luci.version" + + local boardinfo = util.ubus("system", "board") or { } + + local node = disp.context.dispatched + local path = table.concat(disp.context.path, "-") + + http.prepare_content("text/html; charset=UTF-8") +-%> + + + + + + + + + + + - LuCI"> + - LuCI"> + + +<% if node and node.css then %> + +<% end -%> + + +<%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI +<% if css then %> +<% end -%> + +node-<%= path %><% else %>node-main-login<% end %>" data-page="<%= pcdata(path) %>" style="background-image:url('/luci-static/alpha/background/dashboard.png')"> +
    +
    +
    + +
    +
    + Keluar +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") and path ~= "admin-system-admin-password" then -%> + <%- end -%> + + + diff --git a/luci-theme-alpha/template/sysauth.htm b/luci-theme-alpha/template/sysauth.htm new file mode 100644 index 000000000..44bda4740 --- /dev/null +++ b/luci-theme-alpha/template/sysauth.htm @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + +Alpha - Login Dulu + + + +
    +
    +
    + + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    + + + + + \ No newline at end of file diff --git a/luci-theme-argon/LICENSE b/luci-theme-argon/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/luci-theme-argon/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/luci-theme-argon/Makefile b/luci-theme-argon/Makefile index c8833c4cf..89b7966ec 100644 --- a/luci-theme-argon/Makefile +++ b/luci-theme-argon/Makefile @@ -7,19 +7,12 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Argon Theme -LUCI_DEPENDS:= -PKG_VERSION:=2.2.4 -PKG_RELEASE:=20200821 +LUCI_DEPENDS:=+curl +jsonfilter +PKG_VERSION:=2.3.1 +PKG_RELEASE:=20230420 + +CONFIG_LUCI_CSSTIDY:= include $(TOPDIR)/feeds/luci/luci.mk -define Package/luci-theme-argon/postinst -#!/bin/sh -sed -i ":a;$!N;s/tmpl.render.*sysauth_template.*return/local scope = { duser = default_user, fuser = user }\nlocal ok, res = luci.util.copcall\(luci.template.render_string, [[<% include\(\"themes\/\" .. theme .. \"\/sysauth\"\) %>]], scope\)\nif ok then\nreturn res\nend\nreturn luci.template.render\(\"sysauth\", scope\)/;ba" /usr/lib/lua/luci/dispatcher.lua -[ -f /usr/lib/lua/luci/view/themes/argon/out_header_login.htm ] && mv -f /usr/lib/lua/luci/view/themes/argon/out_header_login.htm /usr/lib/lua/luci/view/header_login.htm -rm -Rf /var/luci-modulecache -rm -Rf /var/luci-indexcache -exit 0 -endef - -# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-theme-argon/README.md b/luci-theme-argon/README.md index f55585443..983703cda 100644 --- a/luci-theme-argon/README.md +++ b/luci-theme-argon/README.md @@ -1,94 +1,157 @@ -# luci-theme-argon ([中文](/README_ZH.md)) + -[1]: https://img.shields.io/badge/license-MIT-brightgreen.svg -[2]: /LICENSE -[3]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg -[4]: https://github.com/jerrykuku/luci-theme-argon/pulls -[5]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg -[6]: https://github.com/jerrykuku/luci-theme-argon/issues/new -[7]: https://img.shields.io/badge/release-v2.2.4-blue.svg? -[8]: https://github.com/jerrykuku/luci-theme-argon/releases -[9]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total -[10]: https://img.shields.io/badge/Contact-telegram-blue -[11]: https://t.me/jerryk6 -[![license][1]][2] -[![PRs Welcome][3]][4] -[![Issue Welcome][5]][6] -[![Release Version][7]][8] -[![Release Count][9]][8] -[![Contact Me][10]][11] +[license]: /LICENSE +[license-badge]: https://img.shields.io/github/license/jerrykuku/luci-theme-argon?style=flat-square&a=1 +[prs]: https://github.com/jerrykuku/luci-theme-argon/pulls +[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square +[issues]: https://github.com/jerrykuku/luci-theme-argon/issues/new +[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square +[release]: https://github.com/jerrykuku/luci-theme-argon/releases +[release-badge]: https://img.shields.io/github/v/release/jerrykuku/luci-theme-argon?include_prereleases&style=flat-square +[download]: https://github.com/jerrykuku/luci-theme-argon/releases +[download-badge]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total?style=flat-square +[contact]: https://t.me/jerryk6 +[contact-badge]: https://img.shields.io/badge/Contact-telegram-blue?style=flat-square +[en-us-link]: /README.md +[zh-cn-link]: /README_ZH.md +[en-us-release-log]: /RELEASE.md +[zh-cn-release-log]: /RELEASE_ZH.md +[config-link]: https://github.com/jerrykuku/luci-app-argon-config/releases +[lede]: https://github.com/coolsnowwolf/lede +[official]: https://github.com/openwrt/openwrt +[immortalwrt]: https://github.com/immortalwrt/immortalwrt -![](/Screenshots/screenshot_pc.jpg) -![](/Screenshots/screenshot_phone.jpg) +
    + -A new Luci theme for LEDE/OpenWRT -Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template +# A brand new OpenWrt LuCI theme -## Notice +Argon is **a clean and tidy OpenWrt LuCI theme** that allows
    +users to customize their login interface with images or videos. +It also supports automatic and manual switching between light and dark modes. -v2.x.x Adapt to official mainline snapshot. -You can checkout branch 18.06 for OpenWRT 18.06 or lean 19.07. +[![license][license-badge]][license] +[![prs][prs-badge]][prs] +[![issues][issues-badge]][issues] +[![release][release-badge]][release] +[![download][download-badge]][download] +[![contact][contact-badge]][contact] -## Update log 2020.08.21 v2.2.4 +**English** | +[简体中文][zh-cn-link] -- 【v2.2.4】Fix the problem that the login background cannot be displayed on some phones. -- 【v2.2.4】Remove the dependency of luasocket. -- 【v2.2.3】Fix Firmware flash page display error in dark mode. -- 【v2.2.3】Update font icon, add a default icon of undefined menu. -- 【v2.2.2】Add custom login background,put your image (allow png jpg gif) or MP4 video into /www/luci-static/argon/background, random change. -- 【v2.2.2】Add force dark mode, login ssh and type "touch /etc/dark" to open dark mode. -- 【v2.2.2】Add a volume mute button for video background, default is muted. -- 【v2.2.2】fix login page when keyboard show the bottom text overlay the button on mobile. -- 【v2.2.2】fix select color in dark mode,and add a style for scrollbar. -- 【v2.2.2】jquery update to v3.5.1. -- 【v2.2.2】change request bing api method form wget to luasocket (DEPENDS). -- 【v2.2.1】Add blur effect for login form. -- 【v2.2.1】New login theme, Request background imge from bing.com, Auto change everyday. -- 【v2.2.1】New theme icon. -- 【v2.2.1】Add more menu category icon. -- 【v2.2.1】Fix font-size and padding margin. -- 【v2.2.1】Restructure css file. -- 【v2.2.1】Auto adapt to dark mode. +[Key Features](#key-features) • +[Branch](#branch-introduction) • +[Version History](#version-history) • +[Getting started](#getting-started) • +[Screenshots](#screenshots) • +[Contributors](#contributors) • +[Credits](#credits) -## How to build + +
    -Enter in your openwrt/package/lean or other +## Key Features -### Lean lede +- Clean Layout. +- Adapted to mobile display. +- Customizable theme colors. +- Support for using Bing images as login background. +- Support for custom uploading of images or videos as login background. +- Automatically switch between light and dark modes with the system, and can also be set to a fixed mode. +- Settings plugin with extensions [luci-app-argon-config][config-link] -``` -cd lede/package/lean -rm -rf luci-theme-argon -git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git -make menuconfig #choose LUCI->Theme->Luci-theme-argon -make -j1 V=s +## Branch Introduction + +There are currently two main branches that are adapted to different versions of the **OpenWrt** source code. +The table below will provide a detailed introduction: + +| Branch | Version | Description | Matching source | +| ------ | ------- | ---------------------------------- | --------------------------------------------------------- | +| master | v2.x.x | Support the latest version of LuCI | [Official OpenWrt][official] • [ImmortalWrt][immortalwrt] | +| 18.06 | v1.x.x | Support the 18.06 version of LuCI | [Lean's LEDE][lede] | + +## Version History + +The latest version is v2.3.1 [Click here][en-us-release-log] to view the full version history record. + +## Getting started + +### Build for Lean's LEDE project + +```bash +cd lede/package/lean +rm -rf luci-theme-argon +git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git luci-theme-argon +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s ``` -### Openwrt official SnapShots +### Build for OpenWrt official SnapShots and ImmortalWrt -``` +```bash cd openwrt/package -git clone https://github.com/jerrykuku/luci-theme-argon.git -make menuconfig #choose LUCI->Theme->Luci-theme-argon -make -j1 V=s +git clone https://github.com/jerrykuku/luci-theme-argon.git +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s ``` -## How to Install +### Install for LuCI 18.06 ( Lean's LEDE ) -### For Lean openwrt 18.06 LuCI - -``` -wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v1.6.9/luci-theme-argon_1.6.9-20200821_all.ipk +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v1.8.2/luci-theme-argon_1.8.2-20230609_all.ipk opkg install luci-theme-argon*.ipk ``` -### For openwrt official 19.07 Snapshots LuCI master +### Install for OpenWrt official SnapShots and ImmortalWrt -``` -wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.2.4/luci-theme-argon_2.2.4-20200821_all.ipk +```bash +opkg install luci-compat +opkg install luci-lib-ipkg +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.3.1/luci-theme-argon_2.3.1_all.ipk opkg install luci-theme-argon*.ipk ``` -## Thanks to +### Install luci-app-argon-config -luci-theme-material: https://github.com/LuttyYang/luci-theme-material/ +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.9/luci-app-argon-config_0.9_all.ipk +opkg install luci-app-argon-config*.ipk +``` + +## Notice + +- Chrome browser is highly recommended. There are some new css3 features used in this theme, currently only Chrome has the best compatibility. +- Microsoft has officially retired Internet Explorer, RIP IE🙏Currently, the mainline version of the IE series has bugs that need to be addressed. +- FireFox does not enable the backdrop-filter by default, [see here](https://developer.mozilla.org/zh-CN/docs/Web/CSS/backdrop-filter) for the opening method. + +## Screenshots + +![desktop](/Screenshots/screenshot_pc.jpg) +![mobile](/Screenshots/screenshot_phone.jpg) + +## Contributors + + + + + +Made with [contrib.rocks](https://contrib.rocks). + +## Related Projects + +- [luci-app-argon-config](https://github.com/jerrykuku/luci-app-argon-config): Argon theme config plugin +- [openwrt-package](https://github.com/jerrykuku/openwrt-package): My OpenWrt package +- [CasaOS](https://github.com/IceWhaleTech/CasaOS): A simple, easy-to-use, elegant open-source Personal Cloud system (My current main project) + +## Credits + +[luci-theme-material](https://github.com/LuttyYang/luci-theme-material/) diff --git a/luci-theme-argon/README_ZH.md b/luci-theme-argon/README_ZH.md index 2998ea726..fa1bd999a 100644 --- a/luci-theme-argon/README_ZH.md +++ b/luci-theme-argon/README_ZH.md @@ -1,94 +1,157 @@ -# luci-theme-argon ([English](/README.md)) -[1]: https://img.shields.io/badge/license-MIT-brightgreen.svg -[2]: /LICENSE -[3]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg -[4]: https://github.com/jerrykuku/luci-theme-argon/pulls -[5]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg -[6]: https://github.com/jerrykuku/luci-theme-argon/issues/new -[7]: https://img.shields.io/badge/release-v2.2.4-blue.svg? -[8]: https://github.com/jerrykuku/luci-theme-argon/releases -[9]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total -[10]: https://img.shields.io/badge/Contact-telegram-blue -[11]: https://t.me/jerryk6 -[![license][1]][2] -[![PRs Welcome][3]][4] -[![Issue Welcome][5]][6] -[![Release Version][7]][8] -[![Release Count][9]][8] -[![Contact Me][10]][11] + -![](/Screenshots/screenshot_pc.jpg) -![](/Screenshots/screenshot_phone.jpg) +[license]: /LICENSE +[license-badge]: https://img.shields.io/github/license/jerrykuku/luci-theme-argon?style=flat-square&a=1 +[prs]: https://github.com/jerrykuku/luci-theme-argon/pulls +[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square +[issues]: https://github.com/jerrykuku/luci-theme-argon/issues/new +[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square +[release]: https://github.com/jerrykuku/luci-theme-argon/releases +[release-badge]: https://img.shields.io/github/v/release/jerrykuku/luci-theme-argon?include_prereleases&style=flat-square +[download]: https://github.com/jerrykuku/luci-theme-argon/releases +[download-badge]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total?style=flat-square +[contact]: https://t.me/jerryk6 +[contact-badge]: https://img.shields.io/badge/Contact-telegram-blue?style=flat-square +[en-us-link]: /README.md +[zh-cn-link]: /README_ZH.md +[en-us-release-log]: /RELEASE.md +[zh-cn-release-log]: /RELEASE_ZH.md +[config-link]: https://github.com/jerrykuku/luci-app-argon-config/releases +[lede]: https://github.com/coolsnowwolf/lede +[official]: https://github.com/openwrt/openwrt +[immortalwrt]: https://github.com/immortalwrt/immortalwrt -全新的 Openwrt 主题,基于luci-theme-material 和 开源免费的 Argon 模板进行移植。 +
    + + +# 一个全新的 OpenWrt 主题 + +Argon 是**一款干净整洁的 OpenWrt LuCI 主题**, +允许用户使用图片或视频自定义其登录界面。 +它还支持在浅色模式和深色模式之间自动或手动切换。 + +[![license][license-badge]][license] +[![prs][prs-badge]][prs] +[![issues][issues-badge]][issues] +[![release][release-badge]][release] +[![download][download-badge]][download] +[![contact][contact-badge]][contact] + +[English][en-us-link] | +**简体中文** + +[特色](#特色) • +[分支介绍](#分支介绍) • +[版本历史](#版本历史) • +[快速开始](#快速开始) • +[屏幕截图](#屏幕截图) • +[贡献者](#贡献者) • +[鸣谢](#鸣谢) + + +
    + +## 特色 + +- 干净整洁的布局。 +- 适配移动端显示。 +- 可自定义主题颜色。 +- 支持使用 Bing 图片作为登录背景。 +- 支持自定义上传图片或视频作为登录背景。 +- 通过系统自动在明暗模式之间切换,也可设置为固定模式。 +- 带有扩展功能的设置插件 [luci-app-argon-config][config-link] + +## 分支介绍 + +目前有两个主要的分支,适应于不同版本的**OpenWrt**源代码。 +下表为详细的介绍: + +| 分支 | 版本 | 介绍 | 匹配源码 | +| ------ | ------ | --------------------------- | ----------------------------------------------------- | +| master | v2.x.x | 支持最新和比较新版本的 LuCI | [官方 OpenWrt][official] • [ImmortalWrt][immortalwrt] | +| 18.06 | v1.x.x | 支持 18.06 版本的 LuCI | [Lean's LEDE][lede] | + +## 版本历史 + +当前最新的版本为 v2.3.1 [点击这里][zh-cn-release-log]查看完整的版本历史日志. + +## 快速开始 + +### 使用 Lean's LEDE 构建 + +```bash +cd lede/package/lean +rm -rf luci-theme-argon +git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git luci-theme-argon +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s +``` + +### 使用官方 OpenWrt SnapShots 和 ImmortalWrt + +```bash +cd openwrt/package +git clone https://github.com/jerrykuku/luci-theme-argon.git +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s +``` + +### 在 18.06 的 LuCI 上安装 ( Lean's LEDE ) + +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v1.8.2/luci-theme-argon_1.8.2-20230609_all.ipk +opkg install luci-theme-argon*.ipk +``` + +### 在官方和 ImmortalWrt 上安装 + +```bash +opkg install luci-compat +opkg install luci-lib-ipkg +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.3.1/luci-theme-argon_2.3.1_all.ipk +opkg install luci-theme-argon*.ipk +``` + +### 安装 luci-app-argon-config + +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.9/luci-app-argon-config_0.9_all.ipk +opkg install luci-app-argon-config*.ipk +``` ## 注意 -当前master版本基于官方 OpenWrt 19.07.1 稳定版固件进行移植适配。 -v2.x.x 适配主线快照版本。 -v1.x.x 适配18.06 和 Lean Openwrt [如果你是lean代码 请选择这个版本] +- 强烈建议使用 Chrome 浏览器。这个主题中使用了一些新的 css3 功能,目前只有 Chrome 浏览器有最好的兼容性。 +- 微软已正式退役 Internet Explorer,安息吧 IE🙏目前,IE 系列的主线版本有需要解决的错误。 +- FireFox 默认不启用 backdrop-filter,[见这里](https://developer.mozilla.org/zh-CN/docs/Web/CSS/backdrop-filter)的打开方法。 +## 屏幕截图 -## 更新日志 2020.08.21 v2.2.4 +![desktop](/Screenshots/screenshot_pc.jpg) +![mobile](/Screenshots/screenshot_phone.jpg) -- 【v2.2.4】修复了在某些手机下图片背景第一次加载不能显示的问题。 -- 【v2.2.4】取消 luasocket 的依赖,无需再担心依赖问题。 -- 【v2.2.3】修正了在暗色模式下,固件刷写弹窗内的显示错误。 -- 【v2.2.3】更新了图标库,为未定义的菜单增加了一个默认的图标。 -- 【v2.2.2】背景文件策略调整为,同时接受 jpg png gif mp4, 自行上传文件至 /www/luci-static/argon/background 图片和视频同时随机。 -- 【v2.2.2】增加强制暗色模式,进入ssh 输入 "touch /etc/dark" 进行开启。 -- 【v2.2.2】视频背景加了一个音量开关,喜欢带声音的可以自行点击开启,默认为静音模式。 -- 【v2.2.2】修复了手机模式下,登录页面出现键盘时,文字覆盖按钮的问题。 -- 【v2.2.2】修正了暗黑模式下下拉选项的背景颜色,同时修改了滚动条的样式。 -- 【v2.2.2】jquery 更新到 v3.5.1。 -- 【v2.2.2】获取Bing Api 的方法从wget 更新到luasocket 并添加依赖。 -- 【v2.2.1】登录背景添加毛玻璃效果。 -- 【v2.2.1】全新的登录界面,图片背景跟随Bing.com,每天自动切换。 -- 【v2.2.1】全新的主题icon。 -- 【v2.2.1】增加多个导航icon。 -- 【v2.2.1】细致的微调了 字号大小边距等等。 -- 【v2.2.1】重构了css文件。 -- 【v2.2.1】自动适应的暗黑模式。 +## 贡献者 -## 如何编译 + + + -进入 openwrt/package/lean 或者其他目录 +Made with [contrib.rocks](https://contrib.rocks). -### Lean源码 +## 相关项目 -``` -cd lede/package/lean -rm -rf luci-theme-argon -git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git -make menuconfig #choose LUCI->Theme->Luci-theme-argon -make -j1 V=s -``` +- [luci-app-argon-config](https://github.com/jerrykuku/luci-app-argon-config): Argon 主题的设置插件 +- [openwrt-package](https://github.com/jerrykuku/openwrt-package): 我的 OpenWrt Package +- [CasaOS](https://github.com/IceWhaleTech/CasaOS): 一个简单、易用且优雅的开源个人家庭云系统(我目前主要开发的项目) -### Openwrt 官方源码 +## 鸣谢 -``` -cd openwrt/package -git clone https://github.com/jerrykuku/luci-theme-argon.git -make menuconfig #choose LUCI->Theme->Luci-theme-argon -make -j1 V=s -``` - -## 如何安装 - -### Lean源码 - -``` -wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v1.6.9/luci-theme-argon_1.6.9-20200821_all.ipk -opkg install luci-theme-argon*.ipk -``` - -### For openwrt official 19.07 Snapshots LuCI master - -``` -wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.2.4/luci-theme-argon_2.2.4-20200821_all.ipk -opkg install luci-theme-argon*.ipk -``` - -## 感谢 - -luci-theme-material: https://github.com/LuttyYang/luci-theme-material/ +[luci-theme-material](https://github.com/LuttyYang/luci-theme-material/) diff --git a/luci-theme-argon/RELEASE.md b/luci-theme-argon/RELEASE.md new file mode 100644 index 000000000..795eae7de --- /dev/null +++ b/luci-theme-argon/RELEASE.md @@ -0,0 +1,73 @@ +# Update log for master branch + +## v2.3.1 [ 2023.04.20 ] + +- Fixed the issue where the dropdown menu was being clipped. +- Fixed the problem where the exit icon was replaced with the app store icon. +- Fixed the issue where some colors were out of control in dark mode. +- Fixed the problem where the local startup script textarea could not be scrolled in the startup item. +- Fixed the problem where the Passwall node list button was misaligned. +- Fixed the text overflow problem in dynlist +- Support wallpaper from Unsplashargon +- Fix menu style mis-match on macOS+Chrome +- Fixed the issue of the login page icon becoming larger +- Support wallpaper from wallhaven + > open footer links in new tab +- Remake theme icon + +## v2.3 [ 2023.04.03 ] + +- Updated the style of Loading. +- Fixed a large number of CSS style errors and made the overall more uniform. +- Fixed the problem of uncontrolled individual colors in dark mode. + +## v2.2.9 + +- Unify the settings of css spacing +- Refactored the code of the login page +- Fix the problem that the Minify Css option is turned on when compiling, which causes the +- Fix the problem that the menu could not pop up in mobile mode +- Unify the settings of css spacing +- Refactored the code of the login page + +## v2.2.8 + +- Fix the problem that the Minify Css option is turned on when compiling, which causes the frosted glass effect to be invalid and the logo font is lost. + +## v2.2.5 + +- New config app for argon theme. You can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos.[Chrome is recommended] [Download](https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.8-beta/luci-app-argon-config_0.8-beta_all.ipk) +- Automatically set as the default theme when compiling. +- Modify the file structure to adapt to luci-app-argon-config. The old method of turning on dark mode is no longer applicable, please use it with luci-app-argon-config. +- Adapt to Koolshare lede 2.3.6。 +- Fix some Bug。 + +## v2.2.4 + +- Fix the problem that the login background cannot be displayed on some phones. +- Remove the dependency of luasocket. + +## v2.2.3 + +- Fix Firmware flash page display error in dark mode. +- Update font icon, add a default icon of undefined menu. + +## v2.2.2 + +- Add custom login background,put your image (allow png jpg gif) or MP4 video into /www/luci-static/argon/background, random change. +- Add force dark mode, login ssh and type "touch /etc/dark" to open dark mode. +- Add a volume mute button for video background, default is muted. +- fix login page when keyboard show the bottom text overlay the button on mobile. +- fix select color in dark mode,and add a style for scrollbar. +- jquery update to v3.5.1. +- change request bing api method form wget to luasocket (DEPENDS). + +## v2.2.1 + +- Add blur effect for login form. +- New login theme, Request background imge from bing.com, Auto change everyday. +- New theme icon. +- Add more menu category icon. +- Fix font-size and padding margin. +- Restructure css file. +- Auto adapt to dark mode. diff --git a/luci-theme-argon/RELEASE_ZH.md b/luci-theme-argon/RELEASE_ZH.md new file mode 100644 index 000000000..f3ff9a5ce --- /dev/null +++ b/luci-theme-argon/RELEASE_ZH.md @@ -0,0 +1,71 @@ +# Master 分支的更新日志 + +## v2.3.1 [ 2023.04.20 ] + +- 修复了下拉菜单被裁切的问题 +- 修复了退出图标变成了应用商店图标的问题 +- 修复了暗色模式下个别颜色不受控制的问题 +- 修复了启动项--本地启动脚本文本框不能滑动的问题 +- 修复了Passwall节点列表按钮错位的问题 +- 修复在dynlist中的文本溢出问题 +- 登录页面 支持自来 Unsplash 的在线壁纸 +- 修复在macOS的Chrome中,菜单的style异常 +- 修复在登录页面中,主题图标变大的问题 +- 登录页面 支持自来 wallhaven 的在线壁纸 + > 打开页脚链接时使用新标签页 +- 重制主题图标 + +## v2.3 [ 2023.04.03 ] + +- 更新了 Loading 的样式 +- 修复了大量的 CSS 样式错误,整体更加统一 +- 修复了暗色模式下个别颜色不受控制的问题 + +## v2.2.9 + +- 修复了在手机模式下无法弹出菜单的 bug +- 统一 css 间距的设置 +- 重构了登录页面的代码 +- 为导航菜单添加滑动效果 + +## v2.2.8 + +- 【v2.2.8】修复编译时打开 Minify Css 选项,导致磨砂玻璃效果无效,logo 字体丢失的问题 + +## v2.2.5 + +- 全新的设置 app.你可以设置 argon 主题的登录页面的模糊和透明度,并管理背景图片与视频。[建议使用 Chrome][点击下载](https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.8-beta/luci-app-argon-config_0.8-beta_all.ipk) +- 当编译固件时,将自动设置为默认主题。 +- 修改文件结构,以适应 luci-app-argon-config,旧的开启暗色模式方法将不再适用,请搭配 luci-app-argon-config 使用。 +- 适配 Koolshare lede 2.3.6。 +- 修复了一些 Bug。 + +## v2.2.4 + +- 修复了在某些手机下图片背景第一次加载不能显示的问题。 +- 取消 luasocket 的依赖,无需再担心依赖问题。 + +## v2.2.3 + +- 修正了在暗色模式下,固件刷写弹窗内的显示错误。 +- 更新了图标库,为未定义的菜单增加了一个默认的图标。 + +## v2.2.2 + +- 背景文件策略调整为,同时接受 jpg png gif mp4, 自行上传文件至 /www/luci-static/argon/background 图片和视频同时随机。 +- 增加强制暗色模式,进入 ssh 输入 "touch /etc/dark" 进行开启。 +- 视频背景加了一个音量开关,喜欢带声音的可以自行点击开启,默认为静音模式。 +- 修复了手机模式下,登录页面出现键盘时,文字覆盖按钮的问题。 +- 修正了暗黑模式下下拉选项的背景颜色,同时修改了滚动条的样式。 +- jquery 更新到 v3.5.1。 +- 获取 Bing Api 的方法从 wget 更新到 luasocket 并添加依赖。 + +## v2.2.1 + +- 登录背景添加毛玻璃效果。 +- 全新的登录界面,图片背景跟随 Bing.com,每天自动切换。 +- 全新的主题 icon。 +- 增加多个导航 icon。 +- 细致的微调了 字号大小边距等等。 +- 重构了 css 文件。 +- 自动适应的暗黑模式。 diff --git a/luci-theme-argon/Screenshots/screenshot_pc.jpg b/luci-theme-argon/Screenshots/screenshot_pc.jpg new file mode 100644 index 000000000..4c355449a Binary files /dev/null and b/luci-theme-argon/Screenshots/screenshot_pc.jpg differ diff --git a/luci-theme-argon/Screenshots/screenshot_phone.jpg b/luci-theme-argon/Screenshots/screenshot_phone.jpg new file mode 100644 index 000000000..8237a0368 Binary files /dev/null and b/luci-theme-argon/Screenshots/screenshot_phone.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/background/README.md b/luci-theme-argon/htdocs/luci-static/argon/background/README.md index 1dda9b76a..a86f27b06 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/background/README.md +++ b/luci-theme-argon/htdocs/luci-static/argon/background/README.md @@ -1,2 +1,2 @@ Drop background here! -accept jpg png gif and mp4 \ No newline at end of file +accept jpg png gif mp4 webm diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css b/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css index cfedba569..afbc491fc 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css +++ b/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css @@ -1,3800 +1,9 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerrykuku - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-material: - * Copyright 2015 Lutty Yang - * https://github.com/LuttyYang/luci-theme-material/ - * - * Agron Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * Font generate by Icomoon - * - * Licensed to the public under the Apache License 2.0 - */ -/* - * Include base and custom css - */ -@import url("fonts.css?v=3"); -@import url("pure-min.css?v=1"); -:root { - --main-color: #09c; - --header-bg: #09c; - --header-color: #fff; - --bar-bg: #5e72e4; - --menu-bg-color: #fff; - --menu-color: #5f6368; - --menu-color-hover: #202124; - --main-menu-color: #202124; - --submenu-bg-hover: #d4d4d4; - --submenu-bg-hover-active: #09c; - --blue: #5e72e4; - --indigo: #5603ad; - --purple: #8965e0; - --pink: #f3a4b5; - --red: #f5365c; - --orange: #fb6340; - --yellow: #ffd600; - --green: #2dce89; - --teal: #11cdef; - --cyan: #2bffc6; - --gray: #8898aa; - --gray-dark: #32325d; - --light: #ced4da; - --lighter: #e9ecef; - --primary: #5e72e4; - --secondary: #f7fafc; - --success: #2dce89; - --info: #11cdef; - --warning: #fb6340; - --danger: #f5365c; - --light: #adb5bd; - --dark: #212529; - --default: #172b4d; - --white: #fff; - --neutral: #fff; - --darker: black; - --background-color: #f4f5f7; - --login-form-bg-color: rgba(244, 245, 247, 0.8); - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --blur-radius: 10px; - --blur-opacity: 0.5; - --blur-radius-dark: 10px; - --blur-opacity-dark: 0.5; - --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; - --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; -} -html, -body { - margin: 0px; - padding: 0px; - height: 100%; - font-size: 16px; - font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - font-family: var(--font-family-sans-serif); -} -html { - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - font-size: 0.875rem; - background-color: #f4f5f7; - background-color: var(--background-color); - color: #32325d; - color: var(--gray-dark); -} -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} -::selection { - background-color: #5e72e4; - background-color: var(--primary); - color: #ffffff; - color: var(--white); -} -a:link, -a:visited, -a:active { - color: #5e72e4; - color: var(--primary); - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -li { - list-style-type: none; -} -.table { - position: relative; - display: table; -} -.tr { - display: table-row; -} -.thead { - display: table-header-group; -} -.tbody { - display: table-row-group; -} -.tfoot { - display: table-footer-group; -} -.td, -.th { - line-height: normal; - display: table-cell; - padding: 0.5em; - text-align: center; - vertical-align: middle; -} -.th { - font-weight: bold; - white-space: nowrap; -} -.tr.placeholder { - height: 4em; -} -.tr.placeholder > .td { - line-height: 3; - position: absolute; - right: 0; - bottom: 0; - left: 0; - padding: 0.4rem 0 !important; - text-align: center !important; - background: inherit; -} -.td[width="33%"] { - padding: 1.1em 1.5rem; -} -.table[width="33%"], -.th[width="33%"], -.td[width="33%"] { - width: 33%; -} -.table[width="100%"], -.th[width="100%"], -.td[width="100%"] { - width: 100%; -} -.col-1 { - flex: 1 1 30px !important; -} -.col-2 { - flex: 2 2 60px !important; -} -.col-3 { - flex: 3 3 90px !important; -} -.col-4 { - flex: 4 4 120px !important; -} -.col-5 { - flex: 5 5 150px !important; -} -.col-6 { - flex: 6 6 180px !important; -} -.col-7 { - flex: 7 7 210px !important; -} -.col-8 { - flex: 8 8 240px !important; -} -.col-9 { - flex: 9 9 270px !important; -} -.col-10 { - flex: 10 10 300px !important; -} -* { - box-sizing: border-box; - margin: 0; - padding: 0; -} -.h1, -.h2, -.h3, -.h4, -.h5, -.h6, -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: inherit; - font-weight: normal; - line-height: 1.1 !important; - color: inherit; -} -select { - padding: 0.36rem 0.8rem; - color: #555; - border: thin solid #ccc; - background-color: #fff; - background-image: none; -} -.btn, -button, -select, -input, -.cbi-dropdown { - line-height: 1.5rem; - padding: 0.5rem 0.75rem; - margin: 0.25rem 0.1rem; - color: #8898aa; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - outline: 0; - background-image: none; - box-shadow: none; - transition: box-shadow 0.15s ease; -} -select, -.cbi-dropdown { - width: inherit; - cursor: default; -} -select:not([multiple="multiple"]):focus, -input:not(.cbi-button):focus, -.cbi-dropdown:focus { - border-color: #5e72e4; - border-color: var(--primary); - box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, 0.1); -} -.cbi-dropdown, -select[multiple="multiple"] { - height: auto; -} -pre { - overflow: auto; -} -code { - font-size: 1rem; - font-size-adjust: 0.35; - padding: 1px 3px; - color: #101010; - border-radius: 2px; - background: #ddd; -} -abbr { - cursor: help; - text-decoration: underline; - color: #5e72e4; -} -hr { - margin: 1rem 0; - opacity: 0.1; - border-color: #eee; -} -/*********************** -* -* Login Page -* -***************************/ -.login-page { - height: 100%; - background-image: url(../img/blank.png); - background-repeat: no-repeat; - background-position: center; - background-size: cover; - transition: all 0.5s; -} -.login-page .video { - position: absolute; - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - background-color: #000; - background-color: var(--darker); - overflow: hidden; - pointer-events: none; -} -.login-page .video video { - width: 100%; - height: auto; -} -.login-page .volume-control { - position: fixed; - right: 1rem; - top: 1rem; - width: 1.5rem; - height: 1.5rem; - z-index: 5000; - cursor: pointer; - background-size: contain; - background-image: url(../img/volume_high.svg); -} -.login-page .volume-control.mute { - background-image: url(../img/volume_off.svg); -} -.login-page .main-bg { - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - background-image: url(../img/blank.png); - background-repeat: no-repeat; - background-position: center; - background-size: cover; - transition: all 0.5s; -} -.login-page .login-container { - height: 100%; - margin-left: 4.5rem; - position: absolute; - top: 0px; - display: flex; - flex-direction: column; - -webkit-box-pack: center; - justify-content: center; - align-items: flex-start; - min-height: 100%; - z-index: 2; - width: 420px; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 35px -5px; - margin-left: 5%; - background: transparent; -} -.login-page .login-container .login-form { - display: flex; - flex-direction: column; - -webkit-box-align: center; - align-items: center; - position: absolute; - top: 0px; - width: 100%; - min-height: 100%; - max-width: 420px; - background-color: #ffffff; -} -.login-page .login-container .login-form .brand { - display: flex; - -webkit-box-align: center; - align-items: center; - margin: 50px auto 100px 50px; - color: #525461; -} -.login-page .login-container .login-form .brand .icon { - width: 50px; - height: auto; - margin-right: 25px; -} -.login-page .login-container .login-form .brand .brand-text { - font-size: 1.25rem; - font-weight: 700; - font-family: "TypoGraphica"; -} -.login-page .login-container .login-form .brand:hover { - text-decoration: none; -} -.login-page .login-container .login-form .form-login { - width: 100%; - padding: 20px 50px; - box-sizing: border-box; -} -.login-page .login-container .login-form .form-login .errorbox { - text-align: center; - color: #fb6340; - color: var(--warning); - padding-bottom: 2rem; -} -.login-page .login-container .login-form .form-login .input-group { - margin-bottom: 1.25rem; - position: relative; -} -.login-page .login-container .login-form .form-login .input-group::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #525461; - font-size: 1.5rem; - position: absolute; - z-index: 100; - left: 10px; - top: 10px; -} -.login-page .login-container .login-form .form-login .input-group .border { - position: absolute; - width: 100%; - height: 1px; - bottom: 0; - border-bottom: 1px #5e72e4 solid; - transform: scaleX(0); - transition: transform 0.3s; -} -.login-page .login-container .login-form .form-login .input-group input { - font-size: 1rem; - line-height: 1.5em; - display: block; - width: 100%; - padding: 0.5rem 0.75rem 0.5rem 3rem; - margin: 0.825rem 0; - box-sizing: border-box; - transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55); - color: #525461; - border: 0; - border-radius: 0; - border-bottom: 1px solid #fff; - background-color: transparent; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, 0.05); - outline: none; -} -.login-page .login-container .login-form .form-login .input-group input:focus + .border { - transform: scaleX(1); -} -.login-page .login-container .login-form .form-login .input-group .cbi-input-password { - margin-bottom: 2rem; - position: relative; -} -.login-page .login-container .login-form .form-login .user-icon::before { - content: "\e971"; -} -.login-page .login-container .login-form .form-login .pass-icon::before { - content: "\e910"; -} -.login-page .login-container .login-form .cbi-button-apply { - width: 100% !important; - box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 50px 0px; - font-weight: 600; - font-size: 15px; - color: #ffffff; - text-align: center; - width: 100%; - cursor: pointer; - min-height: 50px; - background-color: #5e72e4 !important; - border-radius: 6px; - outline: none; - border-width: initial; - border-style: none; - border-color: initial; - border-image: initial; - padding: 10px 0px; - margin: 30px 0px 100px; - transition: all 0.3s; - letter-spacing: 0.8rem; -} -.login-page .login-container .login-form .cbi-button-apply:hover, -.login-page .login-container .login-form .cbi-button-apply :focus { - background-color: #5065d8 !important; -} -.login-page .login-container footer { - box-sizing: border-box; - width: 100%; - text-align: center; - line-height: 1.6rem; - display: flex; - justify-content: space-evenly; - margin-top: auto; - padding: 0px 0px 30px; - color: #525461; - z-index: 10; -} -.login-page .login-container footer .ftc { - position: absolute; - bottom: 30px; - width: 100%; -} -.login-page .login-container footer .luci-link { - display: block; -} -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius)); - backdrop-filter: blur(var(--blur-radius)); - background-color: rgba(244, 245, 247, var(--blur-opacity)); - } -} -header, -.main { - width: 100%; -} -footer { - font-size: 0.8rem; - overflow: hidden; - padding: 1rem; - text-align: right; - white-space: nowrap; - color: #aaa; -} -footer > a { - text-decoration: none; - color: #aaa; -} -small { - font-size: 90%; - line-height: 1.42857143; - white-space: normal; -} -.main { - position: relative; - top: 0; - bottom: 0; - overflow-y: auto; - height: 100%; -} -.main-left { - top: 0; - float: left; - width: 15%; - width: calc(0% + 20rem); - height: 100%; - background-color: #fff; - background-color: var(--menu-bg-color); - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; - overflow-x: auto; - position: fixed; - z-index: 100; -} -.main-left .sidenav-header { - padding: 1.5rem; - text-align: center; -} -.main-left .sidenav-header .brand { - font-size: 1.8rem; - color: #5e72e4; - font-family: "TypoGraphica"; - text-decoration: none; - text-align: center; - cursor: default; - vertical-align: text-bottom; - white-space: nowrap; -} -.main-left::-webkit-scrollbar { - width: 5px; - height: 1px; -} -.main-left::-webkit-scrollbar-thumb { - background-color: #f6f9fc; -} -.main-left::-webkit-scrollbar-track { - background-color: #fff; -} -.main-right { - float: right; - width: 85%; - width: calc(100% - 20rem); - height: 100%; - transition: all 0.2s; -} -.main-right > #maincontent { - position: relative; - z-index: 50; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.nowrap:not(.td) { - white-space: nowrap; -} -[disabled="disabled"] { - pointer-events: none; -} -header { - color: #fff; - color: var(--header-color); - padding: 0; - position: relative; -} -header.bg-primary { - background-color: #5e72e4 !important; - background-color: var(--primary) !important; -} -header::after { - content: ""; - position: absolute; - height: 2rem; - width: 100%; - background-color: #5e72e4 !important; -} -header .fill { - padding: 0.8rem 0; - border-bottom: 0px solid rgba(255, 255, 255, 0.08) !important; -} -header .fill .container { - height: 2rem; - padding: 0 1.25rem; -} -header .fill .container .showSide { - display: none; - color: #fff; - font-size: 1.4rem; -} -header .fill .container .showSide:hover { - text-decoration: none; -} -header .fill .container .brand { - font-size: 1.5rem; - color: #fff; - font-family: "TypoGraphica"; - text-decoration: none; - padding-left: 1rem; - cursor: default; - vertical-align: text-bottom; - display: none; -} -header .fill .container .pull-right { - float: right; - margin-top: 0rem; - display: flex; -} -header .fill .status { - position: absolute; - top: 25%; - right: 1.25rem; - float: right; -} -header .fill .status span[data-indicator="poll-status"] { - display: block; - font-size: 0.8rem; - font-weight: bold; - padding: 0.3rem 0.8rem; - white-space: nowrap; - text-decoration: none; - text-transform: uppercase; - text-shadow: none; - border-radius: 3px; - cursor: pointer; - transition: all 0.3s; -} -header .fill .status span[data-style="active"] { - color: #32325d !important; - background-color: #fff; -} -header .fill .status span[data-style="inactive"] { - color: #ffffff !important; - background-color: #32325d; -} -#xhr_poll_status { - display: flex; - margin-left: 0.5rem; -} -#xhr_poll_status * { - color: #fff; -} -div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { - border: 0 !important; -} -.danger { - background-color: #ff7d60 !important; -} -.warning { - background-color: #f0e68c !important; -} -.success { - background-color: #5cb85c !important; -} -.notice { - background-color: #11cdef !important; - color: #fff; -} -.error { - color: #f00; -} -.alert, -.alert-message { - font-weight: bold; - margin-bottom: 1em; - padding: 1rem; - border: 0; - border-radius: 0.375rem !important; - background-color: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - text-shadow: 1px 1px rgba(0, 0, 0, 0.1); -} -.alert.error, -.alert-message.error { - background-color: #ffd600; -} -.alert h4, -.alert-message h4 { - padding: 0rem 1.5rem 0.75rem 0rem; -} -.alert .btn, -.alert-message .btn { - height: auto; -} -.alert-message > h4 { - font-size: 110%; - font-weight: bold; -} -.alert-message > * { - margin: 0.5rem 0; -} -.alert-message .btn { - padding: 0.3rem 0.6rem; -} -.container .alert, -.container .alert-message { - margin-top: 1rem; -} -/* - * Main Menu - */ -.main .main-left { - transition: all 0.2s; -} -.main .main-left .nav { - margin-top: 0.5rem; -} -.main .main-left .nav li { - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.main .main-left .nav li a { - display: block; - color: #5f6368; - color: var(--menu-color); -} -.main .main-left .nav li.slide { - padding: 0; -} -.main .main-left .nav li.slide ul { - display: none; -} -.main .main-left .nav li.slide .menu { - display: block; - margin: 0.1rem 0.5rem 0.1rem 0.5rem; - padding: 0.675rem 0 0.675rem 2.5rem; - border-radius: 0.375rem; - text-decoration: none; - cursor: default; - font-size: 1rem; - transition: all 0.2s; - position: relative; -} -.main .main-left .nav li.slide .menu.active { - color: #fff; - background: #5e72e4; - background: var(--primary); -} -.main .main-left .nav li.slide .menu.active::before { - color: #fff !important; -} -.main .main-left .nav li.slide .menu.active::after { - transform: rotate(90deg); - color: #fff !important; -} -.main .main-left .nav li.slide .menu:hover { - cursor: pointer; - color: #fff; - background: #5e72e4; - background: var(--primary); -} -.main .main-left .nav li.slide .menu:hover::before { - color: #fff !important; -} -.main .main-left .nav li.slide .menu::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - padding-top: 3px; - transition: all 0.3s; - content: "\e915"; - color: #5e72e4; -} -.main .main-left .nav li.slide .menu::after { - position: absolute; - right: 0.5rem; - top: 0.8rem; - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -moz-osx-font-smoothing: grayscale; - content: '\e90f'; - transition: all 0.15s ease; - color: #ced4da; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - transition: all 0.3s; -} -.main .main-left .nav li.slide .menu[data-title=Status]:before { - content: "\e906"; - color: #5e72e4; -} -.main .main-left .nav li.slide .menu[data-title=System]:before { - content: "\e90a"; - color: #fb6340; -} -.main .main-left .nav li.slide .menu[data-title=Services]:before { - content: "\e909"; - color: #11cdef; -} -.main .main-left .nav li.slide .menu[data-title=NAS]:before { - content: "\e90c"; - color: #f3a4b5; -} -.main .main-left .nav li.slide .menu[data-title=VPN]:before { - content: "\e90b"; - color: #8965e0; -} -.main .main-left .nav li.slide .menu[data-title=Network]:before { - content: "\e908"; - color: #8965e0; -} -.main .main-left .nav li.slide .menu[data-title=Bandwidth_Monitor]:before { - content: "\e90d"; - color: #2dce89; -} -.main .main-left .nav li.slide .menu[data-title=Docker]:before { - content: "\e911"; - color: #6699ff; -} -.main .main-left .nav li.slide .menu[data-title=Statistics]:before { - content: "\e913"; - color: #8965e0; -} -.main .main-left .nav li.slide .menu[data-title=Control]:before { - content: "\e912"; - color: #5e72e4; -} -.main .main-left .nav li.slide .menu[data-title=Asterisk]:before { - content: "\e914"; - color: #fb6340; -} -.main .main-left .nav li.slide .menu[data-title=Logout]:before { - content: "\e907"; - color: #adb5bd; -} -.main .main-left .nav li.slide:hover { - background: none; -} -.main .main-left .nav li.slide .slide-menu { - margin: 0 0.5rem 0 2.5rem; - padding: 0rem 0.5rem; -} -.main .main-left .nav li.slide .slide-menu li { - position: relative; - border-radius: 0.375rem; - margin: 0.2rem 0; - padding: 0.5rem 0rem; - background: none; -} -.main .main-left .nav li.slide .slide-menu li a { - white-space: nowrap; - text-decoration: none; -} -.main .main-left .nav li.slide .slide-menu li::after { - content: ""; - position: absolute; - left: 0; - bottom: 0; - width: 0; - height: 2px; - background-color: #5e72e4; - transition: all 0.2s; -} -.main .main-left .nav li.slide .slide-menu li:hover { - background: none; -} -.main .main-left .nav li.slide .slide-menu li:hover::after { - width: 100%; -} -.main .main-left .nav li.slide .slide-menu .active { - background: none; - color: var(--menu-color); -} -.main .main-left .nav li.slide .slide-menu .active a { - color: var(--menu-color); -} -.main .main-left .nav li.slide .slide-menu .active::after { - content: ""; - position: absolute; - left: 0; - bottom: 0; - width: 100%; - height: 2px; - background-color: #5e72e4; - transition: all 0.2s; -} -.main .main-left .nav li.slide .slide-menu .active:hover { - background: none; -} -.main .main-left .nav li.slide .slide-menu .active:hover::after { - width: 100%; -} -.lg { - margin: 0; - padding: 0 !important; -} -.logout { - display: block; - margin: 0.8rem 0.5rem 0.1rem 0.5rem; - padding: 0.675rem 0 0.675rem 2.5rem; - border-radius: 0.375rem; - text-decoration: none; - font-size: 1rem; - transition: all 0.2s; - position: relative; -} -.logout:before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - padding-top: 3px; - transition: all 0.3s; - content: "\e907"; - color: #32325d !important; -} -body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before { - transition: transform 0.1s ease-in-out; -} -body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before { - transition: transform 0.2s ease-in-out; -} -.main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before { - display: none; -} -#maincontent > .container { - margin: 0 1.25rem 1rem 1.25rem; -} -ul { - line-height: normal; -} -li { - list-style-type: none; -} -h1 { - font-size: 2rem; - padding-bottom: 10px; - border-bottom: thin solid #eee; -} -h2 { - margin: 0 0 1rem 0; - font-size: 1.25rem; - letter-spacing: 0.1rem; - padding: 1rem 1.5rem; - color: #32325d; - border-radius: 0.375rem; - background: #fff; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); -} -h3 { - font-size: 1.1rem; - line-height: 1; - display: block; - width: 100%; - margin: 0; - margin-bottom: 0; - padding: 0.8755rem 1.5rem; - color: #32325d; - color: var(--gray-dark); - border-radius: 0.375rem; - background: #fff; -} -h4 { - margin: 0; - padding: 0.75rem 1.5rem; - font-size: 0.7rem; - font-weight: 600; - color: #525f7f; -/* background-color: #e9ecef; - background-color: var(--lighter); - */ -} -h4 em { - padding: 0 0.5rem; -} -h5 { - font-size: 1rem; - margin: 2rem 0 0 0; - padding-bottom: 10px; -} -.cbi-section, -.cbi-section-error, -#iptables, -.Firewall form, -#cbi-network > .cbi-section-node, -#cbi-wireless > .cbi-section-node, -#cbi-wireless > #wifi_assoclist_table, -[data-tab-title], -[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), -[data-page="admin-system-opkg"] #maincontent > .container { - font-family: inherit; - font-weight: normal; - font-style: normal; - line-height: normal; - min-width: inherit; - margin: 1.5rem 0; - padding: 0rem; - border: 0; - border-radius: 0.375rem; - background-color: #fff; - box-shadow: 0 0 1rem 0 rgba(136, 152, 170, 0.15); -} -.cbi-modal .cbi-section, -.cbi-section .cbi-section { - padding: 0; - box-shadow: none; -} -.cbi-modal .cbi-tabmenu { - margin-left: 0; -} -.cbi-map-descr, -.cbi-section-descr { - font-size: small; - line-height: 1.42857143; - padding: 0.5rem 1.5rem; -} -.cbi-map-descr + fieldset { - margin-top: 1rem; -} -.cbi-map-descr > abbr { - cursor: help; - text-decoration: underline; -} -.cbi-section > legend { - display: none !important; -} -fieldset > fieldset, -.cbi-section > .cbi-section { - margin: 0; - padding: 0; - border: 0; - box-shadow: none; -} -.cbi-section > h3:first-child, -.panel-title { - font-size: 1.1rem; - line-height: 1; - display: block; - width: 100%; - margin: 0; - margin-bottom: 0; - padding: 0.8755rem 1.5rem; - color: #32325d; - color: var(--gray-dark); -} -.cbi-section > h3:first-child, -.cbi-section > h4:first-child, -.cbi-section > p:first-child, -[data-tab-title] > h3:first-child, -[data-tab-title] > h4:first-child, -[data-tab-title] > p:first-child { - padding: 1rem; -} -.cbi-section p { - padding: 1rem; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -table, -.table { - overflow-y: hidden; - width: 100%; - font-size: 90%; -} -.table .table-titles th { - background-color: #e9ecef; - background-color: var(--lighter); -} -table > tbody > tr > td, -table > tbody > tr > th, -table > tfoot > tr > td, -table > tfoot > tr > th, -table > thead > tr > td, -table > thead > tr > th, -.table > .tbody > .tr > .td, -.table > .tbody > .tr > .th, -.table > .tfoot > .tr > .td, -.table > .tfoot > .tr > .th, -.table > .thead > .tr > .td, -.table > .thead > .tr > .th, -.table > .tr > .td.cbi-value-field, -.table > .tr > .th.cbi-section-table-cell { - padding: 0.5rem; -} -.container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td { - padding: 0.6rem; -} -.cbi-section-table-cell { - line-height: 1.1; - align-self: flex-end; - flex: 1 1 auto; -} -tr > td, -tr > th, -.tr > .td, -.tr > .th, -.cbi-section-table-row::before, -#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { - border-top: thin solid #ddd; - padding: 1.1em 1.5rem; -} -#cbi-wireless .td, -#cbi-network .tr:first-child > .td, -.table[width="100%"] > .tr:first-child > .td, -[data-page="admin-network-diagnostics"] .tr > .td, -.tr.table-titles > .th, -.tr.cbi-section-table-titles > .th { - border-top: 0 !important; - background-color: #f6f9fc; - padding: 1.1em 1.5rem; - line-height: 1.3rem; -} -.table[width="100%"] > .tr:first-child > .td { - margin: auto 0; -} -.cbi-section-table-row { - margin-bottom: 1rem; - text-align: center !important; - background: #f4f4f4; -} -.cbi-section-table-row:last-child { - margin-bottom: 0; -} -.cbi-section-table-row > .cbi-value-field .cbi-dropdown, -.cbi-section-table-row > .cbi-value-field .cbi-input-select, -.cbi-section-table-row > .cbi-value-field .cbi-input-text, -.cbi-section-table-row > .cbi-value-field .cbi-input-password { - width: 100%; -} -.cbi-section-table-row > .cbi-value-field [data-dynlist] > input, -.cbi-section-table-row > .cbi-value-field input.cbi-input-password { - width: calc(100% - 1.5rem); -} -.cbi-section-table-row .td { - text-align: center !important; -} -div > table > tbody > tr:nth-of-type(2n), -div > .table > .tr:nth-of-type(2n) { - background-color: #f9f9f9; -} -/* fix multiple table */ -table table, -.table .table, -.cbi-value-field table, -.cbi-value-field .table, -td > table > tbody > tr > td, -.td > .table > .tbody > .tr > .td, -.cbi-value-field > table > tbody > tr > td, -.cbi-value-field > .table > .tbody > .tr > .td { - border: 0; -} -/* button style */ -.btn, -.cbi-button, -.item::after { - font-size: 0.8rem; - display: inline-block; - width: auto !important; - padding: 0.45rem 0.8rem; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - transition: all 0.2s ease-in-out; - text-align: center; - vertical-align: middle; - white-space: nowrap; - text-decoration: none; - text-transform: uppercase; - color: rgba(0, 0, 0, 0.87); - border: 0; - border-radius: 0.2rem; - background-color: #f0f0f0; - background-image: none; - -webkit-appearance: none; - -ms-touch-action: manipulation; - touch-action: manipulation; -} -.cbi-button-up, -.cbi-button-down { - font-size: 1.2rem; - display: inline-block; - min-width: 0; - padding: 0.2rem 0.3rem; - color: transparent !important; - background: url(../icon/arrow.svg) no-repeat center; - background-size: 12px 20px; -} -.cbi-button-up { - transform: scaleY(-1); -} -.cbi-button:not(select) { - -webkit-appearance: none !important; -} -.btn:hover, -.btn:focus, -.btn:active, -.cbi-button:hover, -.cbi-button:focus, -.cbi-button:active, -.item:hover::after, -.item:focus::after, -.item:active::after, -.cbi-page-actions .cbi-button-apply + .cbi-button-save:hover, -.cbi-page-actions .cbi-button-apply + .cbi-button-save:focus, -.cbi-page-actions .cbi-button-apply + .cbi-button-save:active { - text-decoration: none; - outline: 0; -} -.btn:hover, -.btn:focus, -.cbi-button:hover, -.cbi-button:focus, -.item:hover::after, -.item:focus::after { - box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); -} -.btn:active, -.cbi-button:active, -.item:active::after { - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); -} -.cbi-button-up:hover, -.cbi-button-up:focus { - box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 -2px 2px rgba(0, 0, 0, 0.2); -} -.cbi-button-up:active { - box-shadow: 0 -10px 20px rgba(0, 0, 0, 0.19), 0 -6px 6px rgba(0, 0, 0, 0.23); -} -.btn:disabled, -.cbi-button:disabled { - cursor: not-allowed; - pointer-events: none; - opacity: 0.5; - box-shadow: none; -} -/* gray */ -.alert-message [class="btn"], -.modal div[class="btn"], -.cbi-button-find, -.cbi-button-link, -.cbi-button-up, -.cbi-button-down, -.cbi-button-neutral, -.cbi-button[name="zero"], -.cbi-button[name="restart"], -.cbi-button[onclick="hide_empty(this)"] { - font-weight: bold; - color: #fff; - border: thin solid #8898aa; - background-color: #8898aa; -} -/* dark blue */ -.btn.primary, -.cbi-page-actions .cbi-button-save, -.cbi-page-actions .cbi-button-apply + .cbi-button-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-positive, -.cbi-button-link, -.cbi-button[value="Enable"], -.cbi-button[value="Scan"], -.cbi-button[value^="Back"], -.cbi-button-neutral[onclick="handleConfig(event)"] { - font-weight: normal; - color: #fff !important; - border: thin solid #5e72e4; - border: thin solid var(--primary); - background-color: #5e72e4; - background-color: var(--primary); -} -/* light blue */ -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit, -.cbi-button-apply, -.cbi-button-reload, -.cbi-button-action, -.cbi-button[value="Submit"], -.cbi-button[value="Upload"], -.cbi-button[value$="Apply"], -.cbi-button[onclick="addKey(event)"] { - font-weight: normal; - color: #fff !important; - border: thin solid #5e72e4; - border: thin solid var(--primary); - background-color: #5e72e4; - background-color: var(--primary); -} -/* red */ -.btn.danger, -.cbi-section-remove > .cbi-button, -.cbi-button-remove, -.cbi-button-reset, -.cbi-button-negative, -.cbi-button[value="Stop"], -.cbi-button[value="Kill"], -.cbi-button[onclick="reboot(this)"], -.cbi-button-neutral[value="Restart"] { - font-weight: normal; - color: #fff; - border: thin solid #f5365c; - border: thin solid var(--red); - background-color: #f5365c; - background-color: var(--red); -} -/* yellow */ -.btn[value="Dismiss"], -.cbi-button[value="Terminate"], -.cbi-button[value="Reset"], -.cbi-button[value="Disabled"], -.cbi-button[onclick^="iface_reconnect"], -.cbi-button[onclick="handleReset(event)"], -.cbi-button-neutral[value="Disable"] { - font-weight: normal; - color: #fff; - border: thin solid #eea236; - background-color: #f0ad4e; -} -/* green */ -.cbi-button-success, -.cbi-button-download, -.cbi-button[name="backup"], -.cbi-button[value="Download"], -.cbi-button[value="Save mtdblock"] { - font-weight: normal; - color: #fff; - border: thin solid #4cae4c; - background-color: #5cb85c; -} -.cbi-page-actions .cbi-button-link:first-child { - float: left; -} -.a-to-btn { - text-decoration: none; -} -.cbi-value-field .cbi-button-add { - font-weight: bold; - margin: 4px 0 4px 3px; - padding: 1px 6px; - display: flex; - align-items: center; -} -.tabs { - margin: 0 0 1rem 0; - padding: 0 1rem; - background-color: #FFFFFF; - border-radius: 0.375rem; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); - white-space: nowrap; - overflow-x: auto; -} -.tabs::-webkit-scrollbar { - width: 1px; - height: 5px; -} -.tabs::-webkit-scrollbar-thumb { - background-color: #f6f9fc; -} -.tabs::-webkit-scrollbar-track { - background-color: #fff; -} -.tabs li[class~="active"], -.tabs li:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - color: #5e72e4; - background-color: #dce1fe; - margin-bottom: 0; - border-radius: 0; -} -.tabs li[class~="active"] a, -.tabs li:hover a { - color: #5e72e4; -} -.tabs li { - font-size: 0.875rem; - display: inline-block; - padding: 0.875rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); - margin: 0 0.2rem; -} -.tabs li a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; -} -.tabs li:hover { - border-bottom: 0.18751rem solid #5e72e4; -} -.cbi-tabmenu { - color: white; - padding: 0.5rem 1rem 0 1rem; - white-space: nowrap; - overflow-x: auto; -} -.cbi-tabmenu::-webkit-scrollbar { - width: 1px; - height: 5px; -} -.cbi-tabmenu::-webkit-scrollbar-thumb { - background-color: #f6f9fc; -} -.cbi-tabmenu::-webkit-scrollbar-track { - background-color: #fff; -} -.cbi-tabmenu li { - background: #dce3e9; - display: inline-block; - font-size: 0.875rem; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - padding: 0.5rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); - margin: 0 0.2rem; -} -.cbi-tabmenu li a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; -} -.cbi-tabmenu li:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - color: #5e72e4; - background-color: #dce1fe; - margin-bottom: 0; -} -.cbi-tabmenu li:hover a { - color: #525f7f; -} -.cbi-tabmenu li[class~="cbi-tab"] { - border-bottom: 0.18751rem solid #5e72e4; - color: #5e72e4; - background-color: #dce1fe; - margin-bottom: 0; -} -.cbi-tabmenu li[class~="cbi-tab"] a { - color: #5e72e4; -} -.cbi-tab-descr { - padding: 0.5rem 1.5rem; -} -.cbi-section .cbi-section-remove:nth-of-type(2n), -.container > .cbi-section .cbi-section-node:nth-of-type(2n) { - background-color: #f9f9f9; -} -[data-tab-title] { - overflow: hidden; - height: 0; - opacity: 0; - margin: 0; - padding: 0rem 0rem !important; -} -[data-tab-title] p { - margin-left: 1rem; - margin-bottom: 1rem; -} -[data-tab-active="true"] { - overflow: visible; - height: auto; - opacity: 1; - transition: opacity 0.25s ease-in; - margin: inherit !important; -} -.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3), -.cbi-section[id] .cbi-section-node:nth-of-type(4n+4) { - background-color: #f9f9f9; -} -.cbi-section-node-tabbed { - margin-top: 0; - padding: 0; - border: 0 solid #d4d4d4; - border-radius: 0.375rem; -} -.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { - background-color: #f9f9f9; -} -.cbi-value-field, -.cbi-value-description { - line-height: 1.25; - display: table-cell; -} -.cbi-value-field abbr, -.cbi-value-description abbr { - color: #32325d; - color: var(--gray-dark); -} -.cbi-value-description { - font-size: small; - padding: 0.5rem; - opacity: 0.5; -} -.cbi-value-title { - display: table-cell; - float: left; - width: 23rem; - padding-top: 0.25rem; - padding-right: 2rem; - text-align: right; - word-wrap: break-word; -} -.cbi-value { - display: inline-block; - width: 100%; - padding: 0.35rem 1rem 0.2rem 1rem; - line-height: 2.4rem; -} -.cbi-value ul { - line-height: 1.25; -} -.cbi-value-field .cbi-dropdown, -.cbi-value-field .cbi-input-select, -.cbi-value input[type="text"], -.cbi-value input[type="password"] { - min-width: 18rem; -} -.cbi-value input[type="password"] { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - margin-right: 0; -} -.cbi-value input[type="password"] + .cbi-button-neutral { - height: 42px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - margin-left: 0; - border: 0; -} -#cbi-firewall-zone .cbi-input-select, -#cbi-network-switch_vlan .cbi-input-select { - min-width: 11rem; -} -#cbi-network-switch_vlan .cbi-input-text { - max-width: 3rem; -} -.cbi-input-invalid { - color: #f5365c; - border-bottom-color: #f5365c; -} -.cbi-section-error { - font-weight: bold; - line-height: 1.42857143; - margin: 18px; - padding: 6px; - border: thin solid #f5365c; - border-radius: 3px; - background-color: #fce6e6; -} -.cbi-section-error ul { - margin: 0 0 0 20px; -} -.cbi-section-error ul li { - font-weight: bold; - color: #f5365c; -} -.td[data-title]::before { - font-weight: bold; - display: none; - padding: 0.25rem 0; - content: attr(data-title) ":\20"; - text-align: left; - white-space: nowrap; -} -.tr.placeholder .td[data-title]::before { - display: none; -} -.tr[data-title]::before, -.tr.cbi-section-table-titles.named::before { - font-weight: bold; - display: table-cell; - align-self: center; - flex: 1 1 5%; - padding: 0.25rem; - content: attr(data-title) "\20"; - text-align: center; - vertical-align: middle; - white-space: normal; - word-wrap: break-word; -} -.cbi-rowstyle-1 { - background-color: #f9f9f9; -} -.cbi-rowstyle-2 { - background-color: #eee; -} -.cbi-rowstyle-2 .cbi-button-up, -.cbi-rowstyle-2 .cbi-button-down, -body:not(.Interfaces) .cbi-rowstyle-2:first-child { - background-color: #fff !important; -} -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; -} -.td.cbi-section-actions { - text-align: right !important; - vertical-align: middle; -} -.td.cbi-section-actions > * { - display: inline-flex; -} -.td.cbi-section-actions > * > *, -.td.cbi-section-actions > * > form > * { - margin: 0 5px; - display: flex; - align-items: center; -} -.td.cbi-section-actions > * > form { - display: inline-flex; - margin: 0; -} -.cbi-checkbox { - margin: 0 0.25rem; -} -/* lists */ -.cbi-dynlist { - line-height: 1.3; - flex-direction: column; - min-height: 30px; - cursor: text; -} -.cbi-dynlist > .item { - position: relative; - max-width: 25rem; - pointer-events: none; - color: #8898aa; - outline: 0; -} -.cbi-dynlist[name="sshkeys"] > .item { - max-width: none; -} -.cbi-dynlist > .item::after { - position: absolute; - width: 2.2rem !important; - height: calc(100% - 0.5rem - 2px); - right: 0; - bottom: 0; - content: "\00D7"; - pointer-events: auto; - background-color: var(--red); - font-weight: normal; - font-size: 1.2rem; - display: flex; - align-items: center; - justify-content: center; - line-height: 1.5rem; - padding: 0; - margin: 0.25rem 0.1rem 0.25rem 0; - color: #fff; - border: 1px solid #f5365c; - border-radius: 0.25rem; - outline: 0; - background-image: none; - box-shadow: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.cbi-dynlist > .item > span { - white-space: normal; - word-break: break-word; - line-height: 1.5rem; - padding: 0.5rem 0.5rem; - margin: 0.25rem 0.1rem; - color: #8898aa; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - outline: 0; - background-image: none; - box-shadow: none; - display: block; - transition: box-shadow 0.15s ease; - box-sizing: border-box; - min-width: 15rem; -} -.cbi-dynlist > .add-item { - display: inline-flex; - align-items: center; - width: 100%; - min-width: 16rem; -} -.cbi-dynlist > .add-item input { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - margin-right: 0; - border-right: none; -} -.cbi-dynlist > .add-item .cbi-button-add { - font-weight: normal; - font-size: 1.2rem; - display: flex; - align-items: center; - line-height: 1.5rem; - padding: 0.5rem 0.75rem; - margin: 0.25rem 0.1rem 0.25rem 0; - color: #fff; - border: 1px solid #5e72e4; - border-radius: 0.25rem; - outline: 0; - background-image: none; - box-shadow: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.cbi-dynlist > .add-item:not([ondrop]) > input { - overflow: hidden; - width: 100%; - min-width: 15rem; - white-space: nowrap; - text-overflow: ellipsis; -} -.cbi-dynlist > .add-item[ondrop] > input { - min-width: 13rem; -} -.cbi-dynlist, -.cbi-dropdown { - position: relative; - display: inline-flex; - padding: 0.2rem 0.2rem; -} -.cbi-dropdown[placeholder*="select"] { - max-width: 25rem; - height: auto; - margin-top: -3px; -} -.cbi-dropdown > ul { - display: flex; - overflow-x: hidden; - overflow-y: auto; - width: 100%; - margin: 0 !important; - padding: 0; - list-style: none; - outline: 0; -} -.cbi-dropdown > ul.preview { - display: none; -} -.cbi-button-apply > ul.preview { - display: none; -} -.cbi-button-apply > ul.preview li { - color: #fff; -} -.cbi-button-apply > ul:first-child li { - color: #fff; -} -.cbi-dropdown > .open { - flex-basis: 15px; -} -.cbi-dropdown > .open, -.cbi-dropdown > .more { - font-size: 1rem; - font-weight: 900; - line-height: 2; - display: flex; - flex-direction: column; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; - padding: 0 0.25em; - cursor: default; - text-align: center; - outline: 0; -} -.cbi-dropdown > .more, -.cbi-dropdown > ul > li[placeholder] { - font-weight: bold; - display: none; - color: #777; - text-shadow: 1px 1px 0 #fff; -} -.cbi-dropdown > ul > li { - display: none; - overflow: hidden; - align-items: center; - align-self: center; - flex-grow: 1; - flex-shrink: 1; - min-height: 20px; - padding: 0.25em; - white-space: nowrap; - text-overflow: ellipsis; -} -.cbi-dropdown > ul > li .hide-open { - display: initial; -} -.cbi-dropdown > ul > li .hide-close { - display: none; -} -.cbi-dropdown > ul > li[display]:not([display="0"]) { - border-left: thin solid #ccc; -} -.cbi-dropdown[empty] > ul { - max-width: 1px; -} -.cbi-dropdown > ul > li > form { - display: none; - margin: 0; - padding: 0; - pointer-events: none; -} -.cbi-dropdown > ul > li img { - margin-right: 0.25em; - vertical-align: middle; -} -.cbi-dropdown > ul > li > form > input[type="checkbox"] { - height: auto; - margin: 0; -} -.cbi-dropdown > ul > li input[type="text"] { - height: 20px; -} -.cbi-dropdown[open] > ul.dropdown { - position: absolute; - z-index: 1100; - display: block; - width: auto; - min-width: 100%; - max-width: none; - max-height: 200px !important; - border: 0 solid #918e8c; - background: #ffffff; - box-shadow: 0 0 4px #918e8c; - border-bottom-left-radius: 0.35rem; - border-bottom-right-radius: 0.35rem; - color: var(--main-menu-color); - margin-left: -0.2rem !important; -} -.cbi-dropdown[open] > ul.dropdown li { - color: #000; -} -.cbi-dropdown > ul > li[display], -.cbi-dropdown[open] > ul.preview, -.cbi-dropdown[open] > ul.dropdown > li, -.cbi-dropdown[multiple] > ul > li > label, -.cbi-dropdown[multiple][open] > ul.dropdown > li, -.cbi-dropdown[multiple][more] > .more, -.cbi-dropdown[multiple][empty] > .more { - display: flex; - align-items: center; - flex-grow: 1; -} -.cbi-dropdown[empty] > ul > li, -.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], -.cbi-dropdown[multiple][open] > ul.dropdown > li > form { - display: block; -} -.cbi-dropdown[open] > ul.dropdown > li .hide-open { - display: none; -} -.cbi-dropdown[open] > ul.dropdown > li .hide-close { - display: initial; -} -.cbi-dropdown[open] > ul.dropdown > li { - border-bottom: thin solid #ccc; - padding: 0.5rem 0.8rem; -} -.cbi-dropdown[open] > ul.dropdown > li label { - margin-left: 0.5rem; -} -.cbi-dropdown[open] > ul.dropdown > li[selected] { - background: #dce1fe; -} -.cbi-dropdown[open] > ul.dropdown > li.focus { - background: #dce1fe; - outline: none; -} -.cbi-dropdown[open] > ul.dropdown > li:last-child { - margin-bottom: 0; - border-bottom: 0; -} -.cbi-dropdown[open] > ul.dropdown > li[unselectable] { - opacity: 0.7; -} -.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child { - width: 100%; -} -.cbi-dropdown[disabled] { - pointer-events: none; - opacity: 0.6; -} -.cbi-dropdown .zonebadge { - width: 100%; -} -.cbi-dropdown[open] .zonebadge { - width: auto; -} -/* progressbar */ -.cbi-progressbar { - position: relative; - min-width: 170px; - height: 20px; - margin: 6px 0; - border: thin solid #999; - background: #eee; - border-radius: 0.2rem; - overflow: hidden; -} -.cbi-progressbar > div { - width: 0; - height: 100%; - transition: width 0.25s ease-in; - background: #5bc0de; - background: var(--bar-bg); -} -.cbi-progressbar::after { - font-family: monospace; - font-size: 1em; - font-weight: bold; - font-size-adjust: 0.38; - line-height: normal; - position: absolute; - top: 2px; - right: 0; - bottom: 2px; - left: 0; - overflow: hidden; - content: attr(title); - text-align: center; - white-space: pre; - text-overflow: ellipsis; -} -#modal_overlay { - position: fixed; - z-index: 900; - top: 0; - right: 10000px; - bottom: 0; - left: -10000px; - overflow-y: scroll; - transition: opacity 0.125s ease-in; - opacity: 0; - background: rgba(0, 0, 0, 0.7); - -webkit-overflow-scrolling: touch; -} -.modal { - display: flex; - align-items: center; - flex-wrap: wrap; - width: 90%; - min-width: 270px; - max-width: 600px; - min-height: 32px; - margin: 5em auto; - padding: 1em; - border-radius: 3px !important; - background: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); -} -.modal > * { - line-height: normal; - flex-basis: 100%; - margin-bottom: 0.5em; - max-width: 100%; -} -.modal > pre, -.modal > textarea { - font-size: 1rem; - font-size-adjust: 0.35; - overflow: auto; - margin-bottom: 0.5em; - padding: 8.5px; - cursor: auto; - white-space: pre-wrap; - color: #eee; - outline: 0; - background-color: #101010; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); -} -.modal > h4 { - margin: 0.5em 0; -} -.modal ul { - margin-left: 2.2em; -} -.modal li { - list-style-type: square; - color: #808080; -} -.modal p { - word-break: break-word; -} -.modal .label { - font-size: 0.6rem; - font-weight: normal; - padding: 0.1rem 0.3rem; - padding-bottom: 0; - cursor: default; - border-radius: 0; -} -.modal .label.warning { - background-color: #f0ad4e !important; -} -.modal .btn { - padding: 0.45rem 0.8rem; -} -.modal.cbi-modal { - max-width: 90%; - max-height: none; -} -body.modal-overlay-active { - overflow: hidden; - height: 100vh; -} -body.modal-overlay-active #modal_overlay { - right: 0; - left: 0; - opacity: 1; -} -.spinning { - position: relative; - padding-left: 32px !important; -} -.spinning::before { - position: absolute; - top: 0; - bottom: 0; - left: 0.2em; - width: 32px; - content: ""; - background: url(/luci-static/resources/icons/loading.gif) no-repeat center; - background-size: 16px; -} -/* luci */ -.hidden { - display: none; -} -.left, -.left::before { - text-align: left !important; -} -.right, -.right::before { - text-align: right !important; -} -.center, -.center::before { - text-align: center !important; -} -.top { - align-self: flex-start !important; - vertical-align: top !important; -} -.bottom { - align-self: flex-end !important; - vertical-align: bottom !important; -} -.inline { - display: inline; -} -.cbi-page-actions { - padding-top: 1rem; - text-align: right; -} -.cbi-page-actions > form[method="post"] { - display: inline-block; -} -.th[data-type="button"], -.td[data-type="button"], -.th[data-type="fvalue"], -.td[data-type="fvalue"] { - flex: 1 1 2em; - text-align: center; -} -.ifacebadge { - display: inline-flex; - padding: 0.5rem 0.8rem; - border-bottom: thin solid #ccc; - background: #eee; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} -td > .ifacebadge, -.td > .ifacebadge { - font-size: 0.8rem; - background-color: #f0f0f0; -} -.ifacebadge > em, -.ifacebadge > img { - display: inline-block; - align-self: flex-start; - margin: 0 0.2rem; -} -.ifacebadge > img + img { - margin: 0 0.2rem 0 0; -} -.network-status-table { - display: flex; - flex-wrap: wrap; -} -.network-status-table .ifacebox { - flex-grow: 1; - margin: 0.5em; -} -.network-status-table .ifacebox-body { - display: flex; - flex-direction: column; - height: 100%; -} -.network-status-table .ifacebox-body > span { - flex: 10 10 auto; - height: 100%; -} -.network-status-table .ifacebox-body > div { - display: flex; - flex-wrap: wrap; -} -.network-status-table .ifacebox-body .ifacebadge { - align-items: center; - flex: 1 1 auto; - min-width: 220px; - margin: 0.5em 0em 0 0em; - padding: 0.5em; - background-color: #fff; -} -/* textarea */ -.cbi-input-textarea { - font-family: monospace; - width: 100%; - font-size: 0.875rem; - min-height: 14rem; - padding: 0.8rem; - color: #000; -} -#syslog { - font-size: small; - line-height: 1.25; - overflow-y: hidden; - width: 100%; - min-height: 15rem; - padding: 1rem; - resize: none; - color: #eee; - border: 0; - border-radius: 0.375rem; - background-color: #242424; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); -} -#syslog:focus { - outline: 0; -} -/* config changes */ -.uci-change-list { - font-family: monospace; -} -.uci-change-list ins, -.uci-change-legend-label ins { - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #0f0; - background-color: #cfc; -} -.uci-change-list del, -.uci-change-legend-label del { - font-style: normal; - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #f00; - background-color: #fcc; -} -.uci-change-list var, -.uci-change-legend-label var { - font-style: normal; - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #ccc; - background-color: #eee; -} -.uci-change-list var ins, -.uci-change-list var del { - font-style: normal; - padding: 0; - white-space: pre; - border: 0; -} -.uci-change-legend { - padding: 5px; -} -.uci-change-legend-label { - float: left; - width: 150px; -} -.uci-change-legend-label > ins, -.uci-change-legend-label > del, -.uci-change-legend-label > var { - display: block; - float: left; - width: 10px; - height: 10px; - margin-right: 4px; -} -.uci-change-legend-label var ins, -.uci-change-legend-label var del { - line-height: 0.4; - border: 0; -} -.uci-change-list var, -.uci-change-list del, -.uci-change-list ins { - padding: 0.5rem; -} -/* other fix */ -#iwsvg, -#iwsvg2, -#bwsvg { - border: thin solid #d4d4d4 !important; -} -#iwsvg, -[data-page="admin-status-realtime-bandwidth"] #bwsvg { - border-top: 0 !important; -} -.ifacebox { - line-height: 1.25; - display: inline-flex; - flex-direction: column; - min-width: 100px; - border-bottom: thin solid #ccc; - background-color: #f9f9f9; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2); -} -.ifacebox-head { - padding: 0.25em; - background: #eee; -} -.ifacebox-head.active { - background: #5e72e4; - background: var(--bar-bg); -} -.ifacebox-head.active * { - color: #fff; - color: var(--white); -} -.ifacebox-body { - padding: 0.5em 1rem; - line-height: 1.6em; -} -.cbi-image-button { - margin-left: 0.5rem; -} -.zonebadge { - display: inline-block; - padding: 0.2rem 0.5rem; -} -.zonebadge .ifacebadge { - margin: 0.1rem 0.2rem; - padding: 0.2rem 0.3rem; - border: thin solid #6c6c6c; -} -.zonebadge > input[type="text"] { - min-width: 10rem; - margin-top: 0.3rem; - padding: 0.16rem 1rem; -} -.zonebadge > em, -.zonebadge > strong { - display: inline-block; - margin: 0 0.2rem; -} -.cbi-value-field .cbi-input-checkbox, -.cbi-value-field .cbi-input-radio { - margin-top: 0.1rem; -} -.cbi-value-field > ul > li { - display: flex; -} -.cbi-value-field > ul > li > label { - margin-top: 0.5rem; -} -.cbi-value-field > ul > li .ifacebadge { - margin-top: -0.5rem; - margin-left: 0.4rem; - background-color: #eee; -} -.cbi-section-table-row > .cbi-value-field .cbi-dropdown { - min-width: 7rem; -} -.cbi-section-create { - display: inline-flex; - align-items: center; - margin: 0.25rem 0 0.25rem 1rem; -} -.cbi-section-create > * { - margin: 0.5rem; -} -.cbi-section-remove { - padding: 0.5rem; -} -div.cbi-value var, -td.cbi-value-field var, -.td.cbi-value-field var { - font-style: italic; - color: #0069d6; -} -.cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: thin solid #ccc; -} -.cbi-dropdown-container { - position: relative; -} -.cbi-tooltip-container, -span[data-tooltip], -span[data-tooltip] .label { - cursor: help !important; -} -.cbi-tooltip { - position: absolute; - z-index: 1000; - left: -1000px; - padding: 2px 5px; - transition: opacity 0.25s ease-out; - white-space: pre; - pointer-events: none; - opacity: 0; - border-radius: 3px; - background: #fff; - box-shadow: 0 0 2px #444; -} -.cbi-tooltip-container:hover .cbi-tooltip { - left: auto; - transition: opacity 0.25s ease-in; - opacity: 1; -} -.zonebadge .cbi-tooltip { - margin: -1.5rem 0 0 -0.5rem; - padding: 0.25rem; - background: inherit; -} -.zonebadge-empty { - color: #404040; - background: repeating-linear-gradient(45deg, rgba(204, 204, 204, 0.5), rgba(204, 204, 204, 0.5) 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); -} -.zone-forwards { - display: flex; - min-width: 10rem; -} -.zone-forwards > * { - flex: 1 1 45%; -} -.zone-forwards > span { - flex-basis: 10%; - padding: 0 0.25rem; - text-align: center; -} -.zone-forwards .zone-src, -.zone-forwards .zone-dest { - display: flex; - flex-direction: column; -} -.label { - font-size: 0.8rem; - font-weight: bold; - padding: 0.3rem 0.8rem; - white-space: nowrap; - text-decoration: none; - text-transform: uppercase; - color: #fff !important; - border-radius: 3px; - background-color: #bfbfbf; - text-shadow: none; -} -label > input[type="checkbox"], -label > input[type="radio"] { - position: relative; - top: 0.4rem; - right: 0.2rem; - margin: 0; - vertical-align: bottom; -} -label[data-index][data-depends] { - padding-right: 2em; -} -.showSide { - display: none; -} -.darkMask { - position: fixed; - z-index: 99; - display: none; - width: 100%; - height: 100%; - content: ""; - top: 0; - background-color: rgba(0, 0, 0, 0.56); -} -/* diagnostics */ -#diag-rc-output > pre, -#command-rc-output > pre, -[data-page="admin-services-wol"] .notice code { - font-size: 1.2rem; - font-size-adjust: 0.35; - line-height: normal; - display: block; - overflow-y: hidden; - width: 100%; - padding: 8.5px; - white-space: pre; - color: #eee; - background-color: #101010; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); -} -[data-page="admin-network-diagnostics"] .table { - box-shadow: none; -} -input[name="ping"], -input[name="traceroute"], -input[name="nslookup"] { - width: 80%; -} -/* fix status */ -.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2), -.node-status-processes > .main .table .tr .td:nth-child(3) { - white-space: normal; -} -/* fix system reboot */ -[data-page="admin-system-reboot"] p { - padding-left: 1.5rem; -} -[data-page="admin-system-reboot"] .cbi-button { - background: #fb6340 !important; -} -[data-page="admin-system-reboot"] p > span { - position: relative; - top: 0.1rem; - left: 1rem; -} -[data-page="admin-vpn-passwall"] h4 { - background: transparent; -} -/* samba */ -#cbi-samba [data-tab="template"] .cbi-value-field { - display: block; -} -#cbi-samba [data-tab="template"] .cbi-value-title { - width: auto; - padding-bottom: 0.6rem; -} -/* admin-system-admin-password */ -[data-page="admin-system-admin"] .cbi-map h2, -[data-page="admin-system-admin-password"] .cbi-map h2, -[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, -[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { - margin-left: 0; - color: #32325d; - color: var(--gray-dark); -} -/* software */ -[data-page="admin-system-opkg"] h2 { - margin-left: 0; - color: #32325d; - color: var(--gray-dark); -} -.controls { - margin: 0.5em 1rem 1em 1rem !important; -} -.controls > * > .btn:not([aria-label$="page"]) { - flex-grow: initial !important; - margin-top: 0.25rem; -} -.controls > #pager > .btn[aria-label$="page"] { - font-size: 1.4rem; - font-weight: bold; -} -.controls > * > label { - margin-bottom: 0.2rem; -} -[data-page="admin-system-opkg"] div.btn { - line-height: 3; - display: inline; - padding: 0.3rem 0.6rem; -} -[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), -[data-page="admin-system-opkg"] #maincontent > .container { - margin-top: 2rem; - padding-top: 0.1rem; -} -[data-page="admin-system-opkg"] #maincontent > .container { - margin: 0 1.25rem 1rem 1.25rem; - margin-bottom: 1rem; -} -.td.version, -.td.size { - white-space: normal !important; - word-break: break-word; -} -.cbi-tabmenu + .cbi-section { - margin-top: 0; -} -/* admin-system-crontab*/ -[data-page="admin-system-crontab"] #view p { - margin-bottom: 1rem; -} -/*admin-system-flash*/ -[data-page="admin-system-flash"] .cbi-value { - padding: 0; -} -[data-page="admin-system-flash"] .cbi-section .cbi-section { - margin-top: 0; -} -[data-page="admin-system-flash"] .cbi-map-tabbed { - border-radius: 0.375rem; -} -[data-page="admin-system-flash"] legend { - display: block !important; - font-size: 1.2rem; - width: 100%; - display: block; - margin-bottom: 0; - padding: 1rem 0 1rem 1.5rem; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); - line-height: 1.5; - margin-bottom: 0rem; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: bold; -} -[data-page="admin-system-flash"] .cbi-section-descr { - font-weight: 600; - padding: 1rem 0 1rem 1.5rem; - color: #525f7f; -} -[data-page="admin-system-flash"] .modal label > input[type="checkbox"] { - top: -0.35rem; -} -[data-page="admin-system-flash"] .modal .btn { - white-space: normal !important; -} -/* wireless overview */ -#cbi-wireless > #wifi_assoclist_table > .tr { - box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; -} -#cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td { - right: 33px; - bottom: 33px; - left: 33px; - border-top: thin solid #ddd !important; -} -#cbi-wireless > #wifi_assoclist_table > .tr.table-titles { - box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; -} -#cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th { - border-bottom: thin solid #ddd; - box-shadow: 0 -1px 0 0 #ddd; -} -#wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] { - width: 23rem; -} -[data-page="admin-network-dhcp"] .cbi-value { - padding: 0; -} -[data-page="admin-network-dhcp"] [data-tab-active="true"] { - padding: 1rem 0 !important; -} -/* firewall */ -#iptables { - margin: 0; -} -.Firewall form { - margin: 2rem 2rem 0 0; - padding: 0; - box-shadow: none; -} -#cbi-firewall-redirect table *, -#cbi-network-switch_vlan table *, -#cbi-firewall-zone table * { - font-size: small; -} -#cbi-firewall-redirect table input[type="text"], -#cbi-network-switch_vlan table input[type="text"], -#cbi-firewall-zone table input[type="text"] { - width: 5rem; -} -#cbi-firewall-redirect table select, -#cbi-network-switch_vlan table select, -#cbi-firewall-zone table select { - min-width: 3.5rem; -} -#cbi-network-switch_vlan .th, -#cbi-network-switch_vlan .td { - flex-basis: 12%; -} -#cbi-firewall-zone .table, -#cbi-network-switch_vlan .table { - display: block; -} -#cbi-firewall-zone .td, -#cbi-network-switch_vlan .td { - width: 100%; -} -[data-page="admin-network-firewall-custom"] #view p, -[data-page="admin-status-routes"] #view p { - padding: 0 1.5rem; - margin-bottom: 1rem; -} -[data-page="admin-network-firewall-custom"] #view p textarea, -[data-page="admin-status-routes"] #view p textarea { - padding: 1rem; - border-radius: 0.375rem; -} -/* applyreboot fix */ -#applyreboot-container { - margin: 2rem; -} -#applyreboot-section { - line-height: 300%; - margin: 2rem; -} -/* openvpn bug fix */ -.OpenVPN a { - line-height: initial !important; -} -/* custom commands */ -.commandbox { - width: 24% !important; - margin: 10px 0 0 10px !important; - padding: 0.5rem 1rem; - border-bottom: thin solid #ccc; - background: #eee; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} -.commandbox h3 { - line-height: normal !important; - overflow: hidden; - margin: 6px 0 !important; - white-space: nowrap; - text-overflow: ellipsis; -} -.commandbox div { - left: auto !important; -} -.commandbox code { - position: absolute; - overflow: hidden; - max-width: 60%; - margin-left: 4px; - padding: 2px 3px; - white-space: nowrap; - text-overflow: ellipsis; -} -.commandbox code:hover { - overflow-y: auto; - max-height: 50px; - white-space: normal; -} -.commandbox p:first-of-type { - margin-top: -6px; -} -.commandbox p:nth-of-type(2) { - margin-top: 2px; -} -[data-page^="admin-system-commands"] .panel-title, -[data-page^="command-cfg"] .mobile-hide, -[data-page^="command-cfg"] .showSide { - display: none; -} -#command-rc-output .alert-message { - line-height: 1.42857143; - position: absolute; - top: 40px; - right: 32px; - max-width: 40%; - margin: 0; - animation: anim-fade-in 1.5s forwards; - word-break: break-word; - opacity: 0; -} -@keyframes anim-fade-in { - 100% { - opacity: 1; - } -} -/* other fix */ -input[type="checkbox"] { - appearance: none !important; - -webkit-appearance: none !important; - border: 1px solid #dee2e6; - width: 16px !important; - height: 16px !important; - padding: 0; - cursor: pointer; - transition: all 0.2s; - margin: 1rem 0 0 0; -} -input[type="checkbox"]:checked { - border: 1px solid #5e72e4; - background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; - background-color: #5e72e4; - background-size: 70%; - background-repeat: no-repeat; - background-position: center; -} -.fb-container .cbi-button { - height: auto !important; -} -#cbi-usb_printer-printer em { - display: block; - padding: 1rem; - text-align: center; -} -pre.command-output { - padding: 1.5rem; -} -[data-page="admin-nlbw-display"] .cbi-section[data-tab="export"] { - padding: 1.5rem !important; -} -[data-page="admin-nlbw-backup"] form { - padding-left: 1.5rem; -} -[data-page="admin-status-iptables"] .right { - margin-bottom: 0 !important; -} -/* IE hacks */ -@media all and (-ms-high-contrast: none) { - .main > .main-left > .nav > .slide > .menu::before { - top: 30.25%; - } - .main > .main-left > .nav > li:last-child::before { - top: 20%; - } - .showSide::before { - top: -12px; - } -} -@media screen and (max-width: 1600px) { - header > .fill > .container > #logo { - margin: 0 2.5rem 0 0.5rem; - } - .main-left { - width: calc(0% + 13rem); - } - .main-right { - width: calc(100% - 13rem); - } - .btn:not(button), - .cbi-button { - font-size: 0.8rem; - } - .label { - padding: 0.2rem 0.6rem; - } - .cbi-value-title { - width: 15rem; - padding-right: 0.6rem; - } - .cbi-value-field .cbi-dropdown, - .cbi-value-field .cbi-input-select, - .cbi-value input[type="text"], - .cbi-value input[type="password"] { - min-width: 18rem; - } - #cbi-firewall-zone .cbi-input-select { - min-width: 9rem; - } - .cbi-input-textarea { - font-size: small; - } - .node-admin-status > .main fieldset li > a { - padding: 0.3rem 0.6rem; - } -} -@media screen and (max-width: 1366px) { - header > .fill > .container { - cursor: default; - } - .main-left { - width: calc(0% + 13rem); - } - .main-right { - width: calc(100% - 13rem); - } - .tabs > li > a, - .cbi-tabmenu > li > a { - padding: 0.2rem 0.8rem; - } - .panel-title { - font-size: 1.1rem; - padding-bottom: 1rem; - } - table { - font-size: 0.7rem !important; - width: 100% !important; - } - .table .cbi-input-text { - width: 100%; - } - .cbi-value-field .cbi-dropdown, - .cbi-value-field .cbi-input-select, - .cbi-value input[type="text"], - .cbi-value input[type="password"] { - min-width: 16rem; - } - #cbi-firewall-zone .cbi-input-select { - min-width: 4rem; - } - .main > .main-left > .nav > li, - .main > .main-left > .nav > li a, - .main > .main-left > .nav > .slide > .menu, - .main > .main-left > .nav > li > [data-title="Logout"] { - font-size: 0.9rem; - } - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 0.7rem; - } - #modal_overlay { - top: 0rem; - } - [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { - display: block; - } - [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), - [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), - [data-page="admin-network-hosts"] .table, - [data-page="admin-network-routes"] .table { - overflow-y: visible; - } - .commandbox { - width: 32% !important; - } - .btn:not(button), - .cbi-button { - font-size: 0.8rem; - } -} -@media screen and (max-width: 1152px) { - header > .fill > .container > #logo { - display: none; - } - header > .fill > .container > .brand { - position: relative; - } - html, - .main { - overflow-y: visible; - } - .main > .loading > span { - top: 25%; - } - .main-left { - width: calc(0% + 13rem); - } - .main-right { - width: calc(100% - 13rem); - } - body:not(.logged-in) .showSide { - visibility: hidden; - width: 0; - margin: 0; - } - .node-main-login > .main .cbi-value-title { - text-align: left; - } - .cbi-value-title { - width: 12rem; - padding-right: 1rem; - } - .cbi-value-field .cbi-dropdown, - .cbi-value-field .cbi-input-select, - .cbi-value input[type="text"] { - width: 16rem; - min-width: 16rem; - } - /*.cbi-value input[type="password"],*/ - .cbi-value input[name^="pw"], - .cbi-value input[data-update="change"]:nth-child(2) { - width: 13rem !important; - min-width: 13rem; - } - #diag-rc-output > pre, - #command-rc-output > pre, - [data-page="admin-services-wol"] .notice code { - font-size: 1rem; - } - .table { - display: block; - } - .Interfaces .table { - overflow-x: hidden; - } - #packages.table { - display: grid; - } - .tr { - display: flex; - flex-direction: row; - flex-wrap: wrap; - } - .Overview .table[width="100%"] > .tr { - flex-wrap: nowrap; - } - .tr.placeholder { - border-bottom: thin solid #ddd; - } - .tr.placeholder > .td, - #cbi-firewall .tr > .td, - #cbi-network .tr:nth-child(2) > .td, - .cbi-section #wifi_assoclist_table .tr > .td { - border-top: 0; - } - .th, - .td { - display: inline-block; - align-self: flex-start; - flex: 2 2 10%; - text-overflow: ellipsis; - word-wrap: break-word; - } - .td select, - .td input[type="text"] { - width: 100%; - word-wrap: normal; - } - .td [data-dynlist] > input, - .td input.cbi-input-password { - width: calc(100% - 1.5rem); - } - .td[data-type="button"], - .td[data-type="fvalue"] { - flex: 1 1 12.5%; - text-align: left; - } - .th.cbi-value-field, - .td.cbi-value-field, - .th.cbi-section-table-cell, - .td.cbi-section-table-cell { - flex-basis: auto; - padding-top: 1rem; - } - .cbi-section-table-row { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-between; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - } - .td.cbi-value-field, - .cbi-section-table-cell { - display: inline-block; - flex: 10 10 auto; - flex-basis: 50%; - text-align: center; - } - .td.cbi-section-actions { - vertical-align: bottom; - } - .tr.table-titles, - .tr.cbi-section-table-titles, - .tr.cbi-section-table-descr { - display: none; - } - .tr[data-title]::before, - .tr.cbi-section-table-titles.named::before { - font-size: 0.9rem; - display: block; - flex: 1 1 100%; - border-bottom: thin solid rgba(0, 0, 0, 0.26); - background: #e9ecef; - } - .td[data-title], - [data-page^="admin-status-realtime"] .td[id] { - text-align: left; - } - .td[data-title]::before { - display: block; - } - .cbi-button + .cbi-button { - margin-left: 0; - } - .td.cbi-section-actions > * > *, - .td.cbi-section-actions > * > form > * { - margin: 2.1px 3px; - } - .Firewall form { - position: static !important; - margin: 0 0 2rem 0; - padding: 2rem; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - } - .Firewall form input { - width: 100% !important; - margin: 0; - margin-top: 1rem; - } - .Firewall .center, - .Firewall .center::before { - text-align: left !important; - } - .commandbox { - width: 100% !important; - margin-left: 0 !important; - } - .btn:not(button), - .cbi-button { - font-size: 0.8rem; - } -} -@media screen and (max-width: 768px) { - body { - font-size: 0.8rem; - } - .cbi-progressbar::after { - font-size: 0.5rem; - line-height: 1.5; - } - .main-left { - position: fixed; - z-index: 100; - width: 0; - } - .main-right { - width: 100%; - } - .showSide { - padding: 0.1rem; - position: relative; - z-index: 99; - display: inline-block !important; - } - .showSide::before { - font-family: 'argon' !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\e20e"; - font-size: 1.7rem; - } - header > .fill > .container > .brand { - display: inline-block; - } - .main > .main-left > .nav > .slide > .menu, - .main > .main-left > .nav > li > [data-title="Logout"] { - font-size: 1.2rem; - } - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 0.8rem; - } -} -@media screen and (max-width: 600px) { - .mobile-hide { - display: none; - } - #maincontent > .container { - margin: 0 1rem 1rem 1rem; - } - .cbi-value-title { - text-align: left; - } - [data-page="admin-system-flash"] legend { - padding: 1rem 0 1rem 1rem; - } - [data-page="admin-system-flash"] .cbi-section-descr { - padding: 1rem 0 1rem 1rem; - } - [data-page="admin-system-flash"] .cbi-value { - padding: 0 1rem; - } - [data-page="admin-network-dhcp"] [data-tab-active="true"] { - padding: 1rem 1rem !important; - } - .cbi-dynlist p { - padding: 0.5rem 1rem; - } - body { - overflow-x: hidden; - } - .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { - width: 16rem; - } - .node-main-login footer { - display: none; - } - .tabs::-webkit-scrollbar, - .cbi-tabmenu::-webkit-scrollbar { - width: 0px; - height: 0px; - } - .cbi-value-field, - .cbi-value-description { - display: block !important; - padding-left: 0 !important; - padding-right: 0 !important; - } - [data-page="admin-system-admin-password"] .cbi-value-field { - display: table-cell !important; - } - .modal.cbi-modal { - max-width: 100%; - max-height: none; - } - .modal { - display: flex; - align-items: center; - flex-wrap: wrap; - width: 100%; - min-width: 270px; - max-width: 600px; - min-height: 32px; - margin: 5em auto; - padding: 1em; - border-radius: 3px !important; - background: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - } - .cbi-dropdown[open] > ul.dropdown { - left: 0.2rem !important; - right: 0 !important; - margin-bottom: 1rem; - } -} -@media screen and (min-width: 600px) { - ::-webkit-scrollbar { - width: 10px; - height: 10px; - } - ::-webkit-scrollbar, - ::-webkit-scrollbar-corner { - background: transparent; - } - ::-webkit-scrollbar-thumb { - background: #9e9e9e; - } - ::-webkit-scrollbar-thumb:hover { - background: #757575; - } - ::-webkit-scrollbar-thumb:active { - background: #424242; - } -} -@media screen and (max-width: 480px) { - .mobile-hide { - display: none; - } - .login-page .login-container { - margin-left: 0rem !important; - width: 100%; - } - .login-page .login-container .login-form .form-login .input-group::before { - color: #525461; - } - .login-page .login-container .login-form .form-login .input-group input { - color: #525461; - border-bottom: white 1px solid; - border-bottom: var(--white) 1px solid; - border-radius: 0; - } -} -@media (prefers-color-scheme: dark) { - body { - background: #1e1e1e; - color: #cccccc; - } - .login-page .login-container .login-form { - background-color: #1e1e1e; - } - .login-page .login-container .login-form .brand { - color: #adb5bd; - } - .login-page .login-container .login-form .form-login .input-group::before { - color: #adb5bd; - } - .login-page .login-container .login-form .form-login .input-group input { - background-color: transparent !important; - color: #adb5bd; - border-bottom: #adb5bd 1px solid !important; - border-radius: 0 !important; - border-top: none !important; - border-left: none !important; - border-right: none !important; - box-shadow: none; - } - .login-page .login-container .login-form .form-login .cbi-button-apply { - background-image: linear-gradient(-135deg, #6c61ab 0%, #594ca9 100%); - } - .login-page .login-container .login-form .form-login .cbi-button-apply:hover, - .login-page .login-container .login-form .form-login .cbi-button-apply:focus { - background-image: linear-gradient(-135deg, #554c8a 0%, #483d8b 100%); - } - header::after { - background-color: #1e1e1e !important; - } - .main .main-left { - background-color: #333333 !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.15); - } - .main .main-left .sidenav-header .brand { - color: #ccc; - } - .main .main-left .nav .slide .slide-menu .active a { - color: #cccccc; - } - .main .main-left .nav .slide .slide-menu .active a::after { - background-color: #cccccc !important; - } - .main .main-left .nav .slide .slide-menu li a { - color: #cccccc; - } - .main .main-left .nav .slide .slide-menu li a:hover { - background: none !important; - } - .main .main-left .nav .slide .menu.active { - background-color: darkslateblue !important; - color: #cccccc !important; - } - .main .main-left .nav .slide .menu.active a::after { - background-color: #cccccc !important; - } - .main .main-left .nav li a { - color: #cccccc !important; - } - .main .main-left .nav li a:hover { - background-color: darkslateblue !important; - color: #cccccc !important; - } - .main .main-left::-webkit-scrollbar-thumb { - background-color: #252526 !important; - } - .main .main-left::-webkit-scrollbar-track { - background-color: #333; - } - .main .main-right { - background-color: #1e1e1e; - } - h2 { - color: #ccc; - background: #333333; - } - h3 { - color: #ccc; - border-bottom: 0; - background: #333333; - } - a:-webkit-any-link { - color: -webkit-link; - cursor: pointer; - color: darkslateblue; - } - input:-webkit-autofill { - background-color: #3c3c3c !important; - } - .cbi-value-field .cbi-input-apply, - .cbi-button-apply, - .cbi-button-edit { - color: #fff !important; - background-color: darkslateblue !important; - border-color: darkslateblue !important; - } - .cbi-section em { - color: #ccc; - } - header.bg-primary { - background-color: #1e1e1e !important; - } - .cbi-map-descr { - color: #ccc; - } - .cbi-section { - background: none; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - } - .panel-title { - color: #ccc; - background-color: #333333; - border-bottom: 0px; - } - div > table > tbody > tr:nth-of-type(2n), - div > .table > .tr:nth-of-type(2n) { - background-color: #252526; - } - table > tbody > tr > td, - table > tfoot > tr > td, - table > thead > tr > td { - color: #ccc; - } - fieldset > table > tbody > tr:nth-of-type(2n) { - background-color: #252526; - } - table > tbody > tr > td, - table > tfoot > tr > td, - table > thead > tr > td { - border-top: 1px solid #252526; - } - #swaptotal > div > div, - #swapfree > div > div, - #memfree > div > div, - #membuff > div > div, - #conns > div > div, - #memtotal > div > div { - background-color: #32325d !important; - } - #swaptotal > div > div > div > small, - #swapfree > div > div > div > small, - #memfree > div > div > div > small, - #membuff > div > div > div > small, - #conns > div > div > div > small, - #memtotal > div > div > div > small { - color: #ccc !important; - } - .node-system-packages > .main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; - } - .node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - background-color: transparent !important; - } - .node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div { - background-color: #32325d !important; - } - table > tbody > tr > th, - table > tfoot > tr > th, - table > thead > tr > th { - background-color: #252526; - border-bottom: black 1px solid !important; - } - tr > td, - tr > th, - .tr > .td, - .tr > .th, - .cbi-section-table-row::before, - #cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { - border-top: 0; - } - .cbi-rowstyle-2 { - background-color: #1e1e1e; - } - .cbi-rowstyle-1 { - background-color: #252526; - } - .cbi-section > h3:first-child, - .panel-title, - h3 { - color: #ccc; - border-bottom: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - } - h4 { - background-color: #1e1e1f; - } - .cbi-progressbar { - position: relative; - min-width: 170px; - height: 20px; - margin: 6px 0; - border: thin solid #999; - background: transparent; - border-radius: 0.2rem; - overflow: hidden; - } - .cbi-progressbar div { - background-color: #32325d !important; - } - .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - background-color: #1e1e1f; - } - .cbi-button { - color: #ccc !important; - background-color: darkslateblue; - } - .cbi-section-node { - background: none; - border-radius: 0 0 0.375rem 0.375rem; - padding: 0rem; - } - abbr { - color: #5e72e4; - } - div > table > tbody > tr:nth-of-type(2n), - div > .table > .tbody > .tr:nth-of-type(2n) { - background-color: #252526; - } - #content_syslog { - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - } - #syslog { - color: #ccc; - background-color: #1e1e1e; - } - #iwsvg, - #iwsvg2, - #bwsvg { - overflow: hidden; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - background-color: #1e1e1e !important; - } - .tabs { - background-color: #252526; - } - .tabs > li[class~="active"] > a { - color: #ccc; - } - .tabs > li[class~="active"], - .tabs > li:hover { - border-bottom: 0.18751rem solid darkslateblue; - color: #ccc; - background-color: #181819; - } - .cbi-tabmenu > li > a, - .tabs > li > a { - color: #ccc; - } - .cbi-tabmenu > li > a:hover, - .tabs > li > a:hover { - color: #ccc; - } - .cbi-tabmenu > li { - background: #2d2d2d; - } - .cbi-tabmenu li[class~="cbi-tab"] a { - color: #ccc; - } - .cbi-tabmenu > li:hover { - color: #ccc; - background: #2d2d2d; - } - .cbi-tabmenu > li[class~="cbi-tab"] { - background-color: #181819; - } - .cbi-tabcontainer > .cbi-value:nth-of-type(2n) { - background-color: #252526; - } - .cbi-value-title { - color: #ccc; - } - select, - input { - color: #ccc; - background-color: transparent !important; - border: 1px solid #252526; - box-shadow: none; - } - select:not([multiple="multiple"]):focus, - input:focus { - border-color: darkslateblue !important; - outline: 0; - } - select { - background-color: #1e1e1e !important; - } - #cbi-dropbear h2, - #cbi-dropbear .cbi-map-descr, - #cbi-dropbear .cbi-map-descr abbr, - #cbi-rc h2, - #cbi-rc .cbi-map-descr, - #cbi-distfeedconf h2, - #cbi-distfeedconf .cbi-map-descr, - #cbi-customfeedconf h2, - #cbi-customfeedconf .cbi-map-descr, - #cbi-download h2, - #cbi-filelist h2 { - color: #ccc !important; - } - .cbi-value-field > ul > li .ifacebadge { - background-color: #3c3c3c; - } - .cbi-section-descr { - color: #ccc; - } - .cbi-input-textarea { - background-color: #1e1e1e; - color: #ccc; - } - .cbi-section-remove:nth-of-type(2n), - .cbi-section-node:nth-of-type(2n) { - background-color: #1e1e1e; - } - .node-system-packages > .main table tr td:nth-last-child(1) { - color: #ccc; - } - .cbi-section-node .cbi-value { - padding: 1rem 1rem 0.3rem 1rem; - } - .ifacebox { - background-color: none; - border: 1px solid #1e1e1e; - } - .ifacebox-head { - color: #666; - } - .ifacebox-body { - background-color: #333; - } - .zonebadge strong { - color: #333; - } - .zonebadge > .ifacebadge { - background-color: #3c3c3c; - } - div.cbi-value var, - td.cbi-value-field var { - color: #5e72e4; - } - #diag-rc-output > pre { - color: #ccc; - background-color: #1e1e1e; - } - .node-services-vssr .block { - background-color: #3c3c3c !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - } - .node-services-vssr .block h4 { - color: #ccc !important; - } - .node-services-vssr .status-bar { - color: #ccc; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - background-color: #1e1e1e; - } - .node-services-vssr .cbi-section-table-row { - color: #ccc; - background-color: #3c3c3c !important; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.35); - } - .node-services-vssr .cbi-section-table-row.fast { - background: darkslateblue !important; - color: #fff; - } - .node-services-vssr .ssr-button { - color: #ccc; - } - .node-services-vssr .incon:nth-child(2) { - border-right: #1e1e1e 1px solid; - } - #xhr_poll_status > .label.success { - color: #ccc !important; - background-color: darkolivegreen !important; - } - .notice { - background-color: darkslateblue !important; - } - .cbi-input-find, - .cbi-input-save, - .cbi-button-add, - .cbi-button-save, - .cbi-button-find, - .cbi-input-reload, - .cbi-button-reload { - color: #fff !important; - background-color: darkseagreen !important; - border-color: darkseagreen !important; - } - .cbi-button-reset, - .cbi-input-remove { - color: #fff !important; - background-color: darkorange !important; - border-color: darkorange !important; - } - .cbi-page-actions .cbi-button-apply, - .cbi-section-actions .cbi-button-edit, - .cbi-button-edit.important, - .cbi-button-apply.important, - .cbi-button-reload.important, - .cbi-button-action.important { - border: 1px darkslateblue solid !important; - } - fieldset[id^="cbi-apply-"] { - background-color: #333333; - } - #detail-bubble > div { - border: 1px solid #ccc; - border-radius: 2px; - padding: 5px; - background: #252525; - } - .ifacebox-head.active { - background-color: #32325d !important; - } - header .fill .status span[data-style="active"] { - color: #ccc !important; - background-color: darkolivegreen !important; - } - #cbi-wireless .td, - #cbi-network .tr:first-child > .td, - .table[width="100%"] > .tr:first-child > .td, - [data-page="admin-network-diagnostics"] .tr > .td, - .tr.table-titles > .th, - .tr.cbi-section-table-titles > .th { - background-color: #252526; - border-bottom: black 1px solid !important; - } - .network-status-table .ifacebox-body .ifacebadge { - background-color: #252526; - border-bottom: 0; - box-shadow: none; - } - td > .ifacebadge, - .td > .ifacebadge { - background-color: darkslateblue; - border: 0; - } - .btn.danger, - .cbi-section-remove > .cbi-button, - .cbi-button-remove, - .cbi-button-reset, - .cbi-button-negative, - .cbi-button[value="Stop"], - .cbi-button[value="Kill"], - .cbi-button[onclick="reboot(this)"], - .cbi-button-neutral[value="Restart"] { - border: thin solid darkorange !important; - background-color: darkorange !important; - } - .cbi-section, - .cbi-section-error, - #iptables, - .Firewall form, - #cbi-network > .cbi-section-node, - #cbi-wireless > .cbi-section-node, - #cbi-wireless > #wifi_assoclist_table, - [data-tab-title], - [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), - [data-page="admin-system-opkg"] #maincontent > .container { - background: #1e1e1e !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - } - div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { - background: transparent !important; - } - [data-page="admin-system-admin"] .cbi-map h2, - [data-page="admin-system-admin-password"] .cbi-map h2, - [data-page="admin-system-admin"] .cbi-map .cbi-map-descr, - [data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { - color: #ccc; - } - [data-page="admin-system-flash"] .modal label > input[type="checkbox"] { - top: -0.35rem; - } - [data-page="admin-system-flash"] .modal .btn { - white-space: normal !important; - background-color: darkseagreen; - } - [data-page="admin-system-flash"] .modal .alert-message { - background-color: transparent !important; - } - [data-page="admin-system-flash"] .modal .danger { - border: thin solid darkorange !important; - background-color: darkorange !important; - } - .cbi-value input[type="password"] + .cbi-button-neutral { - background-color: darkslateblue !important; - } - .btn, - button, - select, - input, - .cbi-dropdown { - border: 1px solid #3c3c3c !important; - } - .cbi-dropdown .preview { - color: #ccc; - } - .cbi-section-table-row { - background-color: #1e1e1e !important; - } - .modal { - background-color: #1e1e1e; - } - .cbi-button-positive { - color: #fff !important; - background-color: darkseagreen !important; - } - [data-page="admin-system-flash"] legend { - color: #ccc; - } - .logout:before { - color: #adb5bd !important; - } - .cbi-dropdown[open] { - border-color: darkslateblue !important; - } - .cbi-dropdown[open] > ul.dropdown { - background: #252526 !important; - color: #ccc !important; - box-shadow: none; - border: 1px solid #3c3c3c !important; - } - .cbi-dropdown[open] > ul.dropdown li { - color: #ccc; - border-bottom: 1px solid #3c3c3c !important; - } - .cbi-dropdown[open] > ul.dropdown > li[selected] { - background-color: darkslateblue !important; - border-bottom: 1px solid #3c3c3c !important; - } - .cbi-dropdown[open] > ul.dropdown > li.focus { - background: darkslateblue; - outline: none; - } - .ifacebadge { - background-color: #333333; - } - .cbi-dynlist > .item > span { - border: 1px solid #3c3c3c !important; - } - .cbi-page-actions .cbi-button-apply, - .cbi-section-actions .cbi-button-edit, - .cbi-button-edit, - .cbi-button-apply, - .cbi-button-reload, - .cbi-button-action, - .cbi-button[value="Submit"], - .cbi-button[value="Upload"], - .cbi-button[value$="Apply"], - .cbi-button[onclick="addKey(event)"] { - background: darkslateblue !important; - } - .btn.primary, - .cbi-page-actions .cbi-button-save, - .cbi-page-actions .cbi-button-apply + .cbi-button-save, - .cbi-button-add, - .cbi-button-save, - .cbi-button-positive, - .cbi-button-link, - .cbi-button[value="Enable"], - .cbi-button[value="Scan"], - .cbi-button[value^="Back"], - .cbi-button-neutral[onclick="handleConfig(event)"] { - background: darkslateblue !important; - } - [data-page="admin-system-opkg"] h2 { - color: #ccc !important; - } - @supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius-dark)); - backdrop-filter: blur(var(--blur-radius-dark)); - background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); - } - } -} -@media (prefers-color-scheme: dark) and (max-width: 480px) { - .node-status-iptables > .main div > .cbi-map > form { - background-color: #1e1e1e; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - } -} +/*! +Pure v2.0.3 +Copyright 2013 Yahoo! +Licensed under the BSD License. +https://github.com/pure-css/pure/blob/master/LICENSE.md +*//*! +normalize.css v | MIT License | git.io/normalize +Copyright (c) Nicolas Gallagher and Jonathan Neal +*//*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none !important}.pure-img{max-width:100%;height:auto}.pure-g{letter-spacing:-0.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-0.43em}.pure-u{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-0.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-0.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,0.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(40%, rgba(0,0,0,0.05)), to(rgba(0,0,0,0.1)));background-image:linear-gradient(transparent, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.15) inset,0 0 6px rgba(0,0,0,0.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,0.15) inset,0 0 6px rgba(0,0,0,0.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,0.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width:480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0}@font-face{font-family:'Google Sans';src:url('data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAFW8ABIAAAAA2DgAAFVQAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGoI0G9x4HKUeBmAAhAIIgTwJnnURDAqB3UiBvQwLhQIAATYCJAOKAAQgBYRnB41NDIQAGz7EJ5hubiR/lNsGgFCW81d/0QXsVni3jdDeRWCO9bMDLTIPKCA+/y/Z//+fkJyM4UAPm1rm+7lslg6TcoycK1yhVF4Fd00lKYMnOBQOl+CKjFHEfIuq31ySSDU87HzeHbmNsgX6LmfjlEVKdIfIiz8bD8xUr+9MmpvlGb1NBxps4YKro8j/gJhCqGbPZIYkd4vYzcfT4a9PuRMK1fqG8BHfIPbCDjeuZ6suWAX5jxolVYEh44GfRhVJC1foEkk8ZPN8ThiPb2Zfje53BraN/ElOXvKI5mxmT3NJ7iJGEsIRQpAHr2BNUKtRatQcqkaVquqL1cT5Maf1erYl2ZYt2Y7NSexwE7dNZtIOdXbTBeauPmsJ8Aj0T4BwIkCe/3//nneufb+MkK7UgargKiNVKhgd+M71OfX3WU46s2sXGR/YVhOl6LTpR46u1rVA7ACCZBUAjp8o3Mb9lkK1dKPgAG3zf8E2llgYIAISdWTLHRx5CMgBCta0Z+Yi8y26//uuIl7Upl9vc3NFk6a+oqmuTstV4J34R2wRW6D7iC1iD4lt5DPMIndJQKjb7i/yLJQwkilFFrz0kxpam69aImwe0hqlvfiZvTRCyIsFK01LLM+5vft/iRJkBjXyID++8zyztHK0ApYyAN3XB5lsaKEsacguL5LNAiXRF8D/oLvjThiR0QEHbnKVpma4F8Ugg/DXnlLKlGXNsOzxP23mSrItA2l9zP8u3ycdwQYI5JSZecHdcFGlalI0R9D0KTqgok5+WAxd6f63u6eRj+q9CXdo69XN5KtJEAtaQtOFkr7K/9/rrE7t7tPTB4HLM8hMgI7y6cM5MBF33OIOaUVPiMtZzSxW79/3pP/ff/rSR+Cxvii5VFBBAocPsn2E7KmWhKtbklV1oMpTB9MhJwEdcCaUp1OIq0l5swghLpazXKawWK6Gf74//FfzZk+oL3saDF7HlHooeFOatUIB++qhUgkCJDmas3+bXh6TsM84QAmoZDsz6TTd5PoA8LOQmdmdDZQ+ALhvhD+oyYFTHHJazVNvizXT+8jAj7G0980AExtN61DFowRRiLv/PHayHp9a0B0WnsjDXSIiXQkllBBCF0oQEff/vSxnF7o5nXlFU5OJPj4V4GwYS234pLXfe5s1USMRFBQQBATU9LoBACfh4oM7vwQvu0sn4cpHYU92pYpIjb4EC92Zetc9xH33aYMe+I74EQ+MN17EJwZhakiSq1R7vY0w1WKrbbbbYaf95ZJbHnkF0TBpPIePCpt/djVsZWR5EC5ahdZT66M1dtMRTj/xncj3hKCBtuhttstvANajW3t2Bffxde26QMwp+b3LwYMGv3Cv+/d8PPnYnuXAMwDAy5E6ulMexR1DNflkFvod7PdoXGrqP3pUWEd+VHhn/szwKwL9hQYgcovi4ZGuvcHmW2mznTY77CzC0MDUDMVIYCHwwUCGZvi3Odz1CVetURG1FGMigUav2tHQlL29GxodFjmMA3S97S4TSQPTPWhmIMwNfHpKpDENIgOuXc+LviRYLaFSGPX7d2IikYGRiZmFDzt/AbxuhkYRSGQ0gMnu4ChAtXo9umo029STHgjT+J5xKDojxNjpNfUVjHgbLwg1ZkAT0CSEBtIidBgVUOXK+t0f0J8o/6BcQNy6w2CE+M3SE44BYUIxQxY8n2EAoodOHTbn3zAEShINLR2PMhUCRif/rCIXUqRPKYF3RF6odwIhpzF93wsQZIRdnzbYNRB9zKWRhKg0iXla1/N4SEAvWQ2NpEHfC1oJF+/YnojlTTEfq5iWEnCjwevU0gri4r9i88tF7WgwUiGkVD/tD1EiFDVB1dBDKWKiN886QDYU+0U24gIcIhHPl0SkJdLR0NMysDLetUGeYcyQOZ+t4wLkZhHKIhwvhkUNFrURcfzFoySgJWIkYaWvCpmyqeRSqkelPrUGVEpIepP14acftUGr3QhjoSqccavFTHNZzF8tFljM35KvsbLD5dZSWGcTle3NqrfHXir7qZxgcYbKnxyucLhBdIXgJpNHFzWJjuyJj+QkR35JnxMgN7dUexMQK/59ATlhgCIy6Gl7j+JtIjVUVoiotBQZvgUaDDljqIsFCJreUYsXU93H7f3BIWH4Xs7cgbtTCpfkRfNO5ahS61VRZ2WTynTcK82OpjwX2DLutqxe8kDLzbJ3tVpbETIjFt5i0c1bZHrtKlNcBAkQYIKCWwEI5zTjyAxXImpDrmCJxJUSg14yQFuawyhohzYjl28VKBVmmQhl8lbLX5TMBDbAksc8zlfiklGQMFEb2BoFGDVXQkOEM40sDBqGEZwLhimh4cDXipjs+t4RkoXziEweUaLttfbzL2iaFMiJPaoQYkeXjT+Zndk0QNdCj6yNkAQwiqp3sSrWQev9CDxmwWOCqwW6ZWG/l6Np7NnoO0bJO7eQPmf5D7VBAKvYlsBPBpVNoq2iXTFVn/SayBX5o8ejvmMNq9TEer1EBsyI61ulMz0eE2hGxm6aNkcLW+mLSt9Lxo5SUAagLYpaiuJV3dxiEHEAXh52/qC1m3I9PuNjakm/bgx14REhjDWacX3cjR4/AJipRwvxYCdJltYUP0iBgzzlB8vrVgMlDMNIMvA90+qCYEjCIDkhvDgUxT8gOcfUBmL6oWdA3wTMyiM3diwB5bjLAYiHADPuj89t2E0QHLshBatAAw68p7GCx/zrj1mAGMsFZTDuAmdOaEl+WGXNtOTQ8prKKNiJGqQ83ETJ0c4YyAgA4INZGWIZ6ofaTE0nL7CrNwkkrpJDueV+GJZSiizdVEw+GLupU7XzfR/51FIWeUgcTg8MMALKwXJuG1ru/NwUSocY65eyrkuSDHsWYIZp9sJxe7OdJVnYTHAugQPkRgShBKOFYISurN+E4YRTiCCIXJWiROPEUImlVoNKTaJaJLVpxNGKp5NAL5FBEqM6TKrQxq3EeJPQJq+cKabhTUeZMdwJL1WqtNtoKZid+DoNMT7Tqg0gjnmJhsDrbwEQIUEEf0l8ASSLAlAHgJddCigg9pjj4thYLg8DazG/8fEICo0hY9UA4AMAIBZAgCDK3uUptpRLOL2876ukphQyqqO/7JNOOcHfvHpxVKKdnIBzRK08X9MqiW5hJMfU4weBqjkwEGjFHgBE/egsgCABrcrtgdwClQ1/xPUAKOlzJkFMJ4DlHXK+T6IR8z5gFSEarS0EzX8gNM5PNJjoJgmai8eVRpjLar6loqVw/jhkSHs0UGwxaCO7UIPDPTU9LPS/RzUx42XW1PveqTa3s7HcbO5zZ3pCJozeQjP5QOu+OQDcCiOjE6m+F5zlxszn6onYZRjr6bARPii1VwI1E9ZhOLfeANB7bM+5IV9SYwulUhY+ETS+U4i0KzvtSKNtKImXiJzbXXy44wTXL6OFG1pjRl9nsEuR2u3XrBbOz8DUSiVPV95Apkmbwd5S0/ZXG2ebGG4OChhPecLXNYkrFPOBmSJvsywSji+xyDEZGMaAollBZ5HR8ZglBOjHZpDgOYGWfygwMZUy1O0mQEZxNLrw6VjXuS1A02MuG8a43W4jjKvvwzAk0m6hoZJrdkbuCzAqv7smhjUxEtA3w8Y571NNvZ9zn16mKq/vSQqUuAEjDPXox7GRlKo3oakoLz01Ga3nhAYX5uayOa8TuP6tBIJG2a+P7K6JL4gkGQOUichCyUbLwcjFyiPKxysgKKRUtKoUq0tUj6Q+jQa0GtIpodeIQSmjxkyaMGvKohkfzVn1Y7QMZy3aupVYbxPa5pW3xTYK29nsGPHWJ+lzyQGHGR0BH0ehY3wcp3YS7Qn0FOMZ9JzoBd5LgleUXlN5w+At0Tu89wQfKH2k8mk1+OwLxlcG3zC+X25A5FDwo2Ij8aXlS8fMwp9VCCeD2gLEc0kQKImbl0oym1Q+0qGMJ1qZ3EWi0qY+aB4U0bKWLjp9dKaY2Cxx8SkStlJLYtONUz96QwSrJFvCbdlob+3C62yeEq/Qp5KtthE5zZouOjpLQtqE07o7f4LRX4L8ff3Gbxv9C0H+43CBr4ucLgl2jd2tvzN74hPis690vvmOReRVuuagoC9bLbOXzX7HxWacpAc0P66DDGiNBuyYfg+YBJjZ/4OXLnH5Xqd1d2JA1rbvgxsFW6f4hDhcP0+4NSBgNA9UwBUqzHpLS5TudCMpe/3EymcWNERMAjqAFPacDiG7qEs0ggNa4J2NU4qNMezqqwUAsh7E9YCa9y75E/D1YTYZwb4xAHo/jt3UpjuXC1zHC9nAaRUvcBNDEYx975NNMzEa6WAMY0NwXsEBGjopxKrnAklrztkM76JkdGzy8+neLexww/SDoCUHsKUJIqp33q4tscdwNA4wo69nJhz7K8KJng4MNZaeQE0FqZNwNChaHN0q8uVAOCl4aSRDqYxaQm3odMOoQBmANwSrcgyP5IZqjClTJaRMtQX/E60LOBcxLg3rPhQRXgYwceG4SUJPSo+FkpJi0sRGpdi0OuCUPrJpSQjHbFeyDjEq+SZkSciRT9r80qVPlXr82/hYHhrFJSYlJaWJTh7BZ8ueLWW+CQn5jdqnHt+ry5G6EbqMY2Ah4xhMSJhv8KQWChLRA7MESirqx5AoEeakx104WaoyLbXRTYUBhjyRPNNf/vaPf/3nfxdcfMzsEpfcdoCOhiqlCjTodEbc0pY9KwkrbMzU+FhOITIvCAo/oCiggAMhckHhiNpo8RgJWIkESTiN8ZqNgrNwKG6GozcFNUIr5mL+4gJ00R1xFA0gVAykfrajeIiJkcH51hAsJMyP4WSio6Oih74JiYmNi0+RMEo5n1QhHiK06OjoODy28q4D2R9VQeIu3BoRgQZg4kZBUmsJnWkEczVdPHUGdayAszgDntZSljwRBxBmjRJFmeUq9F+PuaGuDeLJ+QPOj0xr0MLWjnEz5fmfxuLwuy8NAW69ZQMZ5IA7opCv+egju/aGuGOqKrqB5/9pvC5IP6VTh1bQ+pTyPt2g4ykVbbpC+TrWE3qfsUkMPOethkMpgyMaWw1rM0NcUbNKPFb6N9VSoBLF30x0LGIkSNXXUGNMNvuPI5zzk19hUUQTFgAS8XCE9bvanCZ5UUM7mhrfh6aH9nnRt0nfg/0c/Xr3O9/f0L+s/8L+1waoeM+AtgPGD1g54HD6rgF7F+0//5etA0O1jv7tWwfxWmf/la2D60W64A+YxiFOp4VqMdtGoC8dyl86nL71iGGA2rTgJkCNEgaBKbkPGqGKfNsDvu8jsvnfxJU/4BynJWnm/5fKorTVHueqdjoQ3TTPPjJ/fnopx+uEINHGCnBqYgkoSsFiJMlUrIm2yvU3wkTICQAAIR0C6dnBV5FFUe7YlhOTHpqdwC1KgnSFSrXWVV/DuXIYBShpyDhUENwVXCLESZWvREud9YYcoOeWXjpys7NueE5hakmWq4EyHeGRDbQSC3s+Yqafc2ShavDIVk8zyAr6WEpqzcEBnyyHUgxkQT9lnZg7LLB1Az5l2Kv3e8iEMj62lgmqHpDHNGtF/SgyoLFjaBjSYyY+oFhEjivOass10aWYoz8mTGQjw6MfstTEBUZAmd9DIohMdeKRuvsYWVN2u+CMJrxc2mNkj1PyTy6T7YgotWNwfxYONZGPTajaCwlhSU8saBUKClaA71kxmm0KdrAf2LFNMFKwA/+IA2c9ogd7lh/KeE38DdvrHuwZs7OYk6KxPFx6Ghwe/NkXdxFa+MNxqKrw4EciqkzpNicDmPNuJy67/JR+hgWsYmpuhKq9y1nH5bddsR7w7p+knReQnzYoQhgZEBAIRWKJVCZXKCFYp9FiFE6bDHqOJ1EmoZA/6rz3lEUSLU7EqPzQuG21I9kBo+V6+XfHVTdh3uCZ9Dc3ckZkeY7nFgovQm68t3a5XEWyPX6V9Rzk/yKSrpFSDWW7S73/yPFSJsdTh6cS0R6kvBNJZMGixEmWrVipMm111l1fg43wBiVHI6+XziKvOgu97CzwojPf8848z/IzfEQUce4Wet99UeBdvrd5PjXyNMcThu+GzCDhPvHwnn2ER/fsY0Q3oWHypdNFfcVPP+cTLJXvG/pNoZbJbFa5YNMaagQTs5KOR7GVdjub0pgD7aJ3sSyWb166NIFTDZnJtfxe/dBu8VwPM9R/5HZ+jIhXlt2jUqq+bA1BjVBptzYXRrGEiN4uae6ED9LulJzxN2+ndDkc8qhAAZWoQjWKKKEmUJ2I2Pw5P/1SHQEGCVJII4MsEMRQuQB63BJEF49TMYBcXqUA8pZfbTxMg8QAMpihKIbQhAYAzuvdlLV7URYcpZ41ljrZuweoH+KYAXgPAMBe/QFApjMraQr0OYAfKADwsv74BKhBRjNQG6o6mpD6dbqu1Y0ZRB4oD5bHyFbZITtlt5wgp1N6Uzb6O/2n+c9w6pzG6i4EarKliU69hDuMli2y/R7E/8F8+729tf3W03r8fLV/+f/5F6fvHL1zpAPtbU8729bS5lRY+O1iOVbO+/utc4Bee7Af/FwQsO4eAdxP9WFY7i/2ifwVP5G/7Ot/CRpTU2l0BpPF5nB5AF8gFIklUplcoVSpNVqd3mBMM4GQ2QJbbXaH04W40z1eX4YfDQRDmVnhSHaSJRpJW2DMhHETZsxdvGL5ytWr1qzbsH7jpi2bt27bsWvn7r17Dh44dBjq2u7Y1XqurEH39nKoWgz1AMf3A8Apg2Htoco2FIBTh9jD6HFzTnBtXVNzfUM2J7k8nRiAC//+h1FTR04aP2XqtMmzZsPcpYsWHD+sbFgP4PRFAJBX8L5DUxsD+XU7UN0KtBj3xJrfb8i6Q7ChAvw+WqzBIEtE1iNVckRyjs7kMUyMvBiuIaqpAOc2kckHipTIRMhMBPMVjWbJ2cr62J4hV8GOSTzSZMpH/z4/UmTJU6B4i9x5vXNmjx0zetTIEZXDhyVDBg8aONh1HrvRSgrOKMEIgm1d5mkc+q5tBLIj4azMUDCA+jO8nnQ34nI67DYrzCZv70+3t54lMQpTvp1vVysiYrSaOyYvgUyhdN4QtGmC7xrV6ZnsTiplJSt4cJstr/azMKVr2kopLiQg3a/U6XOnmxvKwjjoSe1AIazix8bhfRKUiotaLaV9Wmd0SH0ZQIOAJZkA7SGfjsBsbtzLiLtTi/SnAbRpy5jUrNjM62ZEDbuVgbu9t8RLJdQApVRcEBO/b/oRFwgzcgPjFrZJqnIcyOLtoH4Bz/nz/KIczJQI0vLkQxMqwHGWxWDP8PITMlRYkbVF+Zc9Zo+3S7USCW5ikvzQEX3yQ1dulheEMD90m58JKXU3Nj7IswwY6n2ECcY+s110kk7PpzNWLn0ZzRQ/4sn4tgLhuUUHEvBT9EIn1LEsKfk59TqRVb+OZpDaI7Lpu5B3D4QgMvGSiDApp6ttr/nN2lZtt1RFtyMey59N0T2CCBB+WSLYHmS0lykw+1c3LJdY7N4DyfCUZvypnaAUiWk/xKCreqg/UuTmlxj28PanfmrdvLyQaiWL1KpZpplPguwO4Jizkn8Ck8TsKNE3cFc4qaw69u4aKtYtJsNzyTZeeRjWM7RpjhPrbzgdJAyfkpyeUhGYbU257s664FZl6zk5HZFxJ51eJyith1oVsDzkWwXXIjEbkdvkUlxGJBkXYTK/QZTcVH7DlbjySVCXAa/x+HXOOKPy0zDFEyL4D80TubAeZgrPHjy5ub1eHG6UsuWkWqEsQqu+q1Y63eg/0B+OTQIYopBX08TqG37qD4fcKckqlD9ycndnoc2MncLXSHcayCxHJXknW8OeZtmZXXBLgC5eE3kO7x3kJsTTPDh989VbCxM09bKftDIMTPmbuatWEgVRtWaLwolV0nDXThefBxdGTBxPjlAXKz7XfRLJRUVZlOB2V/ybYi40cjY7xXfT26NY2jOKZlZCEtBuJY6xwUA0aU9ZxHvChbOChrrR20VCMZe0zlv19+0O3D7mScIR0gdSWJRYtrp+OY9skoJJ+ZQ/+IWkAQ0p5lQ25U2RJdVOfyLtQjITqSy4ezEWlI0ZPTZ6WYhVjY4b0OnYbRTIDsWDrJ2cVeky0OEoGYhI0cJLFhpZ9eFY2BTMDbk+dF2zYL7kJFS3KUrOWUV4qixPcVKw21O1AV0GcDvkSShwIJH1wiKCcJCu9aW3Reua/RzG9WUaYDu9JBo4g5iyMmNld3WHfESmjRUEk4931jQknjDiNIQ9DJeCOQn99zCSCsHddOQ0K0qpTmJ2vIyQAVYLOPYMolEgsLwtfzvKYUXHkY3XTwwwsqYbtmt3OAE6DdrrlYpAmBuJS9ePD3DgSezMb4oLKQFWl205gr+SULLlOIG6I5s/Wq3LbHkC3C+5kbXUS4RWGoU7VPKNxhCAdlY12CvhOksNJYIPcyRYwAOLbhCPMXZjU6VP2O5Hitv5o1j8kHic9JT3/O6RRflnsVkSjgFj7FrpThCao1XhgIPF++NrNmCl8eaLVIv8sjIVRkrRi9ViODWC6Qbnxpfln8A1fhAZVqaZ/V4jwzoHMzAfnbWw1623SzRt2afqhhbmuCSnWG3IHUIHe0KXDlPjin7P0WjbMujLtSips6hDJEVwTQCSZvKREQS0DohbkyL+mSDRyfEtBNMjoSrwmiHypHu7+RTriJsty1M/NIBX8nwfGSED5tNq7ZqlvG6zJletvLAkuidO5T6x1kisPX2MKS5aujoeUmQivxAkSPxEcPzNFjdDrjsCraI3KwDcEv0k3OZDdEU40baoRtolrLLteTbB3TTkZi0VR/a1043dYc57hNCeQHlBIfJl4lgD2rtV+oTfJgZmEHYksiG7syvTOvWXXOtfiQKpJARmY8vyGTRzSMEAjPAZ30RduCVXTIyktVb9Xbp3qw7CWmTvaGhtbPEN1BDgW4WaOCPCRd5mbKLgROQzDcyqXLMIHaVg9pSXpnuTKnbCm8OtyvkE0J6QR7Yfk8klgBe+5KIwEI5eGjjR1UrIdVVl3c0KtZeGJ9je+xYl4bkwEaaI0tAF3ZIVCP+QxxD2m//szXxuxy2ObwQs21OGtnlWaJEj7TQHs9p85Tg4MN8gl9z/QIFgSjj1LuVvm+gJ1XvXmvZrrW8mVr77VvjZn+ipB08TToy73DWeKvWWGzg35BM7lv8nVi1m2SY6vVD4lfRzwykl5+J87WPzpsJjCNyaneITCxwvyv/ttgrjhG28TxkEQ+nhPgt5R8AJfGRtuFrxKRvTkA5CX/THSMhhkPKi3VLe1Ad32y9z28pta6ynTvjP0zqL2hYBE4zx54oNOfTyF2pnB4ahj41SU+pesiE3g5Vsm0ZG5hPLA/gMfZEfzybh4HY1/4T4awwFThTlL12semo5gk3+Xyzc3zSmIlSwIRxqxRsnfTy+ENy3/hTu0BOGwyCrIYHyfDsVNOBPEPEipMI394MEiOAIrUsAANwCAJCLAe4IjI8B+A4EoG8F1MXA711BAOATrp1+7BQGgdVkISRIIZEVJRo1gadbT04U6UjCsbMm6jh2kdYdeGdsB1E2JAALhT5o4AFKcujkVq7PAhTHcm9LPYYOYEHEgdNRcwzvmalLETJhpyKktZdj2lcjbyFDJU0tuFpaBwatRPMOn8/uYRAwxhFY4OC9QHEfkfOABYTkF3cJu6H8ihyKZAlAWPKLwXUpLVPDeEaouC5LbRoMunQdBnGYYwwIAVi3I61GmobJVmOCJeN0JI2Gf3O7i9koFDbxgMPC0C3801Iz4LmQ0mSTnaQGIoHKucRVn072jURpOYmxpJuH0L6T2IrgJDZjYa6jQiRHxhigFDqH29B5D3PY1WHYCtK5rr/1c8sPPl/+XnDG42Z0O6mzevsw86KfniasB/RTcsAEgjQRZwr8QWrMSO4QB8psh0H3N7ylbf8wYUyGAZ0RBNApQLOQrHwwDw0CVAcdHGwhvoVjGyoZtqs9tzkgi8WkOuVMYV3nUzHTdZcxAsfpww8XTDVnhb95BUtrgtnKzJaVcP/8EFnZYm0bAylrku+nDkbo0dlML89Vl1bnfyVWSxsjj1et63r9dqPkBB57g7xmI4JK2ItCWTb4okXkWw5USq2xT9g1U1ROMjMm12HNcl11lf3MboygixK8892LfBsCsgHoMCChzl9mhnOwe+kifvBxZ7HN6NCpXORmrLft7ptxqciLyt3UWspDtxt29/SWRxonuB8d6zID1Smnl+5ptiSGyFZEwIzZVBaLor1sOlRjL9rmY2HyENCY1jDQMtI8VTdckng579JIjiAvuUgXO43l0niwSvExPyTDpVaxnK/K3Ubv40fouXQ3zyjVNYvLufBdzQ/cr77Pteo7cVlVnQCzixTbBkmwBUYjwReqbWwr2wJJ+iO1rrBUIsrZ86Szs24C6lv7lJ4cRhr6Xh2NEu8IYuRJvbZUoNK1Vol/c0rH9vOWQrtQ+jiGQxJ5wPCzZNIXthqjgl2AEPxX0vHCDetLMCeVt8nGjUkYQSU2F72Gs+E9kld76F+4YH0BimJ33hW3n4/5D40akU31+DXyolYujTDuxKRSiKRGnkOeLEdhgu07AEMcMuwhRQnUsEhTuBkTUVyW2kUSh7W7cH2eKnbpCCY8qFuN0gsNi3m+smXhpbNe8NgqqURh27zJnYOAIQQtrunc0hPVLaWeI6fiSvfgxydll5jS9XQDmR/Qq+Z8sBVGnUkQpGAl/x0dQIM+GeucHIjj6TWHQxQknQJBDGGgsMuD2jDDD77fCDDeb44SKWEBtUFG8WhQECVyBA5GxQxDyqJDZCY1eu2NwkEwkOFVpkXPE/yLsJmexsYiYBwBpxt8FdiEYau5PuWPPE7ctG1OZgxJBqOLWduLp9HOvlOyh5em9MO3Ifb215HR2bEhcP68+fSQAnrwpdGJ6hgD5zOcL3QMmoFKk2iMZBIGamapvlQ/nonsrEIx+4/bvnNb3g0WR95U6TSVCfCgX16JOgG6qjFIoQXqyv4aEGWdXjebLFoYdS9WJDYWBeBriJvYpkb+kLx4D0/0BPs4PYJ19NqE2bB0acXBcFBQtyd/irDL+2pGFjBtqfEAelJ7XDLPZBTsPYuOFPNUCDeqK6b4Ducy1L5SSUIRD6LkqJTXTDa+sNruXIoZMwuQWYVMQk9PgJEi4Fk0GdKLgWfxyYzfKB4nkNV6miudxjJKgmpZhqRDbj7BXws0nx58XjMzI8P2utodzdLaTPWM9PTxRd7oRalFVcjs+F6dgoCBQXVFQIAcWK/0ZDb2E8+cJVqZDZeNPlbrMrOrLNjf8zqnho+3aEvm1ph9XYYCAoRUe3iXt6a5vdSmEmYu8m3a0MjmmjG0vhicX7zxoo2RtR63UTTQ4KtL1ZNire6LQyQW0CJFASwIUN6GEGA/n/4qaWp4Ep+lPqqPuflWVVfBeuEMfzaPpc+4EIXzdE0rgnXdmFfMM7sEXkSrIK8Y5tRrVJuwyRjLHjF8/9xDNl9ljZqR18awJZ1Vw2VJmmwsZdWqIiBK1NMkXz9PPyo0KRu5OrizAJQIqKwLzLyMCAvNBu43lDCztJGs+mKwqA6jhfIiqInr0jkKyI3d5RzDc+JZ+uOxDca7cI/T0HPVvkvGuoLbG+k+U9H4C9GjbwabCKw4UWUo1AO4qYVPc6OMkaRW5xXZzpTV2s9+qXbuOGmcv/5QrYgPuzo4dhHsUiUs1NUp7tRiy/e1NBwf+Gzz3rTUjZDZWGzJnvv/5ektzSX/fwrZcxzNnXN+vWql5Dyh5nAxW/K/bc3VMm3tok6OFNCa+S+cOeGajtQ3Yam526vtaQk2CWK41vGnQ9k5KS33FQ/YsGEcX23+WHFZuqZutIwa1HKXYBWpvznx0/5uYaixF6yGn/OrwQo31djj+zIDfd4R3a6XzOQTVc1S5Qg1gUvGsYaP9Xggbr/mas9KYOW4gjtdIVwx+okzQs/xPamNofTk+nLLP0+n4GeeYHLUcNFCewILomw9zs0L7K/4vKyhSABuxPX4uEWVxVM0yl2u0O7jDLdme6MZrT0xV8TFVj9KtZExFhiP6R2gPWOmH+mlZvBzl7I6RhhtuxIg4YWz6moNF6uVkusElylrkn21rERGhx+y1xR1BWJx4zLT5gR4EOxB3DOWuYcWqGKKBK0ON8v6IUeJfQANVAK9OI/iyEtrpTjj3XzhD1t3taoE1pd6yeUNHIWOHIvb7t3q4lyJpYSl7WaPJO7CwugOa0+rj+dy1MUTGQFuz+QtFB89top/VGh+0zzkw3mDKyqmUxjVwHf/ix+BfnFdfU6nEE3tz0qwyw/42PxbA1c/enTDmnk1NOD7Nf9HEES3CA7t5AJ8pxfqf/v3vL18mzbdM8N7OyOb70d0zCRm4NT3AbGfMGIU9B3ODD4nB+4+epo+lP7xzRJeF3Tt1EOK/eFr54/NjnDCNIAvlZCMeMOIMiJCIRLdWwaID3AA4DRufCkEPI9m6Qr/ubF6rrrwUldXbhjcV1ndV54wljeKhpu//rVnA1cdyjbvC5mZg5Q5vtHoirTx0fRqmJRSBUnXGGv7L2zoOy6AA1v5iB/IRHmzDj2uZ9FRak0a4HVlJOc1JTduDAtygBoAN85d66npuobCaZNkJdnX1F4S3tzVN4dz96Ei7ZrUPQLf2MH3X6jo36f5uuy1622HPUTdm6QrfNX+Z33pbbbeeQxH5Hx2NwlMJB7YUZ6IfxUebXjUvJzkba+aFyNwBcf6q2taca6nC8zMn5enrr8s9TwzwMdM0evy+7oL67SzswRZUT16AOTf+e7/3p8x9bljJhK0g2gmzCQOivkdeYhMfyCbGbLoz46Blva4qZ0DLB3JZ5ykM9PTXR0DSqZ2ki46Uy5Oh9Mz9smc3n7cWj7nluW7BwThANyvKSfO7SRdtVn/+rcvkxbOhgGeO0M6FoWDlgGo+4GDPOVT6fsgPS/oGMrv7f7vXCHz9oESgBHDfJCwusgtANx8PuB2CwQCRMDfOvhu5DcZvv3IfOjwvNRNywXCZTzeVqFgG69sd8PqrQ0+GaS9+0OhbgloAfOtjSZzHWwEa+b0mLYwBeA7EJ5A5zX3tjEJbi3jPwZjxheNqQZkPTnz4uKQdbEevkSY7gMkeJ54setjSz9NmOD72zLuQ57gvbo6Fh75Pja2aYHlI+fXgnWtdBYnVDPiwUqmt9nabKpiruyrl+UqXuQo7qffYdDn9/v2wUclSHxyX8zlhGn4WUY/um4qGKgv1cN6bNM+k5MdcL3LfZcKB3zBDc4BVxUW2q72HJ9PQhsDSwu9Kk+Gjd/pdqMrw6ZWS4B9wP+a8FdkzSgv7dQUxRZ0ENDg9JlhTD1AuvkLR2EyzHWlzJCagyKdMU8uz5SVVVZfuAh5d+Dv4jJpNtffLvLfLqOMaaKU02llIIWtTZcr7QaZyKqWy9aeQyj44oBXlytUoHK53N6AoacEtDpdbqncyGqYbUsz3on8GvKE5vifI5hnLuJTXDbb6vvgIP2XblNBfi9oyvCD9C86lMELDfUmEy6JXIi2UK0tSUvTlZbrIMY1XLlJU6pRAoXLdg2CBJu/RLPksgK1odCgM5aWGw0sD8RkgRw2C4SYbLa5CbA5YH5bEF3xBijXeyDoLIy+hiuTayNqjSHAxvSTuHkKWTBHrNOCBUfBiwtLMGxPQKPWRSqapcmWQXqJxKyRyVnnAr1c5/LBaiV66fUZsFL9KHrtzhQKiGGu0UzgXCsKqtmUucTwmD/EyNtcwiShzsO1Kr9R8zlJaBKl+GwYvt/NGI/hGW6s7ugx+FiLzRA14+jPQGd5vX0XYf/XSxJoGlyfShfdU0o2vEUo9sKQRxcWSVC5UuFaN/gmnRuM0nYfoQkhyu3dVVK8o6zMv892l1RU7Cgp2lEWdjVYGQu/NdiYAnlIKoloNdLsgFTKAilTMaK0PqTnKVxKSBtCZ83yh0Kz/YE5Royah6zt2yxkP+9Pm02vRy+ZzG7X6ZrJlCldebiubOsZhemXfTQutycxH/O+ze2pKurqqSgTK4NKmQw5g/FCQa1GExkqVeNgNj3vRjLxjIm248UxC33Mm5SUv2YzD/8uU+LWtcrbVFYGxquXesZqsedH5vGN7lE219hgEAxrcI/OKr8/YHZ6EJ/edadqdVZwZSEjRoVVd257RsydNWYM3BFjuAcrLvfaP3I8nI9273JOgfzeTIESNbh1rQo2l5YSC6sXpU9WnjrCKQP0zjE299hgEAxvE6ctD6AvIbuN/YtCzkSQ0/FoaPkaeXoXKq+RoxdQuAZGyZHevx6D1kuNgQR3OoXWWKaFvdAf6GenojxPYYw+Wk8rxtRSicGKbbMwJR/9NaOvoezMFe1q7/S3TPtzB0abtF/wn+89gX7rhhsTMyfP+PHZJUuL1Rhq0lb0QqjJD1ZdGCvDrWmTu7m42LMwt6QkL3B5RjocY1GUGM1FkKgZPr3rq65IrsvT60mnjS2lo98a2GeJVCrxLHt5X2IuwcPNwTJvUwnGX5uAac5psd3EXVr5KDDKBKAjx/OrQMxdfue4EZC05Zt2sxIAdav/jvmVjml7ilZDRz/UMdKoFcwe/m+DZdzFFQJIYLCHgmvqNRhQUCOxpfmIl52E3KBbqgwUSA2GMF9h2u6mroG1GiWiF3JNMjD+cxalaChqgbOH8dSaZ22/el95/9eOxv6F6webhmecRs8HwxWBQKQieB49nWEY0Wzx4gf/nrOjb0ImJjHzQN+cPl3BIVG/54wavIN+smJwaOHgJ5ipnpwTXaEFff7EcMuYEL53j+eZxbvjMTtMRc8zv9YWnuJiTnALY3s4vo4s2MfD7Pit4ONIJzqEUTqKWue9kTmKOt77Bt+HSjwHd2A74F+jHtw1zsMDLAVzrmTPdUGHxCWf348xI29nDpp9A36Aze/Klg53YjdKQZ7QJfa2ZmUL3LEusjrdrOfa6GndD4E0rbSxIgfy2jH+oFQpcdh5PDswwhLLgmG1gPtdvLkfLiIrwji9F9DrvWFMcUSmsVRZjO2I29hWZbGkuhAhP6jR8IOIEOC7hIKNeRZeZz7pPq4RNrUhiKm90eLIqHGNcJEFDpGcj4gEQbUaDGvkKxAx30leXof48NdwVRZjmxsxtje/qhZNWNaE6Q1fRy94nZjGsEwjd2H1AohQEFKridG/JQDpDq7ektaG2HUdNXa7sxLUNLoGkWZyxOkuFrdQEram/ldr88w2k7t3Ml2G65K0dUcOkqMU8ax2Jp/3b0b8X/HUn1zBGGTMTlR45nVDhgah/OtWKNIDYb8aM6aJSANWQMZWN2Jsq4BATZZoAsbufdc+YWQ1n+vgA6hWB6AOQCBw5l1aIOD87WgydKHXe1swcJZUkZ1fkWVFNRaLScUGhUwnJxlNCoalSQRJEiGVkEQjcLLRn6jk+J3Xb4UH9jY0DiDvZsIojDhcoMzQhZ76/L0Cc/7XizxM+9W/BYPL0ASD1r+TDT+9TkwgKBWrfPLkLSG5NhQqj1j9GusKNfN+qp1HQdW2FSrmg1QHLwWlQk6xhGWySF4FoGuCjFpOGp/m4JDRpEe4ZivY7nR6FpgrzQsELo9AFNRqmXFaKPRG4H3yeM0Pr0sdLI20PJd6Wx6ijDjJkGfP+KTWtYj8ueTy3kKb40T9P1HDD68P8xZVCGmTIt1sxl06zCGhSctxla5hTirfIeaLICadElj2+BJiVQMyMEiTQqXqDDuVCgW5r1KSdx2yxzhinA6FUA6HGSr7835QVCPEy0QyZ6IzO5HOeO53Bp08MuPVy0TSElzesHwTKrObIBUP5NPtHAr60+vAWMJSWVLfn+Fli3qtmJd5+UdgSN8foZbZPUdOD46c1bNlVmDNj8CY+aPno/gTvbZ/yxt9ZPiRwl3/7O1VMOb06NMFsffI1x5GVrT1WjQworkZGkLPBkroyFQ7UCJHluEPtAdDju2cKVSYOoWz3REMOeNhPPM7sF2YQMTYTKLtwHcmHo6P6kMlFsxEsC/xzN75NlHfABfp613f2fqWRRW8Hz0r/VJ0wgk8xCJWpyTV7TQeK7xQXi5Z2aNH02m+wOvLqcPGpfSPe+8f+Gh9xAH2Q2H0Th4sr4QgeVUefPvO0v8KMu3FLnKK04ortVZ/d5A7JY78SGnEkW+J/auKU9Ugt/eR1BVh/VpZ4dg3SwggTybJish1nnw/CyHvWyNSplkEqS0TFctnRCZbmwZyZc8jyUFmxVYaNP1glgnMPBS9oc1ua9sQvdEOgfaN0RvWmOJptikbngRe0UEWiw6+YjD/FjBZv2/YDG9G/b8/ww9S86e8TsTwEx/n76O2w+vR9fD6jX59+nekA/EjSxHsV35Ia0SLAKV7xND4LDd5SD6iUiE6gdRlCBJCRDRg4gC2CUFZmCtMj0iMchSQgzMR8uo0rZBWdi+BcdyEL6HURAI8uv1l1NQVaXFbanPWJslcuhAx3/FrSlI48gWf8DM+4VFC/OOEGT0e4VOzzwnq/+PK9PoygwEsMFcaZ0h+sVhNiR3yi6wpIimJ9TTDT4Ms7V/chcyS5PrU91umxKUcoVCOpDBG9DcmjFiJc9IBkGepQDwsMIYbJTGpRSzN4KxUZkhhUYS4Up+mbyGIkeQCYr7laTmjR3VOiv4Em9bIhFYqh8Hb8eZBtLxNnexc0sGUhNOWaK2/l6S2n4ACWR2DjWpVtBiVKNbtxoP4pOEHT3FpNN5JH1jJa8ZdRTsUIpFCycktslJLcuwH7j543zJ42Z+17rXugncRL3Vlw8MdRBoL0BdLdLlGI1i/kp6yxp2RmYFEpfVWRRGSvq2wo18wtuDdhVFxLTGxrXH4K7tTI3JPTB93Boe9gJd7CleoVZWaTMx4rtGYe2n2P5kwn097/qQzHk5iRD2W9mFdY7h6diY5zX5w8Eu6OmCU0MHkQmpIG7rrpqiLhnDxHx7C9GzrGbmsMbt75SorkXeYx+viJdoFno5FMTGLohsSM9E5IKdnssfJpkeS7+664vf9lM5iG88UPo0rxpzcL+VPlk83+3tEez3KuF42JHd2/7ntM1bmB56WhyDdH+gVYOpO0VR1LhQwW2FHL6DjU2VywS6zh3rE2O8X4AtfafHDy5jqly8eOj6tWMJaczH43zUNOZHlWJxVkrtpQ0FJ2Ml0zHWA0qdoOFzbbNjFisxz/lsla3gtfr8ZREY4nOP8RXQv7UhYWn9b8m6ziUYk+py1S0NB2Djg7w8uTdtvVPFuos6DaBjTzDQWy03UmdPkYlgv1YI2A6YEY4jOz1WCuhyxLKAsDwGYdCjTZFAPLVGaWJTXJwQ5v9pOs45zK9pKG1qsN1mGymb8zJXpnZWmECHAKziNLXVwD6vHXm3+v3XEeIWvYNqSSZ/z0oW/Q6Hb5sBx7OdqxztDNeIR2/PSczfXLqu1hDw2+XEoscbAD3hIH2POwadInf+nH3qKq7WYGixWsK4qzSiEqQyw/w/uCOWyEHP6FqK1IBkWFwLLIBJkhLaXeg0dNRY74LHzuOkSCddtAwC+A5jp6QhAFO/wb5M3gEKvnvmd0C5419HbG8ODYn5uFlUanf7RBtvCqsNnRRWmn2dJU2/KPZL1k2iddM4gYgYBw09Oegb5AcVZAy7YfzwvnrYLvdUbwjSFQ4KOsKyxHXpsuPMK4IUT4B/oT3SQTNoOrCVzpk2Q1rbC6/jI9XA/OrwrWj8ntZnbDaFuYkNQa/Rhimy14IB35aDZL5xV3C81uNr077+xyebf7Ab/DBs9PHWwqN6pS/fx5WDdvvZlqsM84NC/fwSvJ/NwXNymuNjDsbFHYus/ZQimnRxIdcHMb4lJ5MH/9F/zlKCGc7LHQ6KO8cvZ+IZhYSw244eZGHXxhiGrVeSIOZZANBMGRZhlDuhibBOrV8bO/A8EBULQJBCYwPcCrFs8c4f0yybXi4RNaLNiUwfp/J2PTewW29V90NW9Q3ISYXbEOUoTqYyz58E+Ek4i1YPz4uzZlaM0DhaCf86CjgEpSIePiLyAv9MTE+nf4RdEpNOHgCsQ12oLezcbPATMeaozru5l++uecduIvdLWpqyhF3Egl3y0acHBg4cOLvwAY0sXiPNh4bYGrD56F7wL2wN8PsYdL685XF3tWVi1enVjjdvtT2/0jk9HJnq9YFiz1zaUL+0x8BxU05rNtvKnpFbW7SCOYh+rTh6rrSVGq9b6pijrm5rT9DlQDWSqg2DW418MKKs5PNj+ZOXEYmFTwf49JU08ww+vF5PcUCzDPwv2JqV4UAsR5dzCNVugFjsCNteC5nB1WeXRvFns9KBHbMvUPqi0ekK1C3NSySYax4KLOvhfc/ayQs7vkFIMOtKdTEyOjcoH6y1wi80OtzTAJr6NasPwyu9NnjqxSuBPY9NtfAFCaRwWG1zazuezbCCbTe61gm9wmVu4VvMFx+GkrlbIZmNhyOnYsmYbqwSqSNoEAta5mh2/6qiRuIisEeP0jpnD/LD+uKidOUiOyJEddL251xvCFGfLNObq2cP4oTFTXTrTgHZDY75JOrhWR4hDzFC+jn3qwHzj9yq1V6LCPbfMtfylx9+JBOkJON+KGX3dV382Es2O5gTf3F4dCVYYxFx/y7jgZ0L/88DhD5mE0pKSaFupLuOap8UwLr2a+fe5G2InthcKI3YXhJkTh6lxeEj1zm3QKg6kcW3Lulea/jSoVFCwaVESMZ1HdP6bmejMDqRjI5NH+iXjj5uJHBRyxfnuC5A86r/7nJNQ+fkV6U0Vb+pVsJuVUd5sW9eG/iZX6be01QqChs994RpcgHY7h+aiPJiaK6UjLMbW7di4Et7QfR3v2zORftuRi+Q2Cilf41M/PUejkdE70d3W5ASVOZvDmzD0gb0f4fOKk2KItRRDrRz6slcz/T1Ab5LyNd5MJGdESVJpvFf3xWLND1TsAC3KNWmng0N+HYsDEmVKKQ2TuA8l5f6SukP7l3KbZdCEhmY5LSgWexbSIpElB0t2E88rkdAIjxv9S8qNqm7WpOe7VVUmbOKs8eMt+XFx/yYmCrIPLLFIAIlNIyLLF+XlrdT+GVWB2sU79o2YnkTIS0p0ETkqetL7ePzbeCB5/JkuvhzUCAQPV8jkLqOCeG79FmD7n/oPYpXYYRo9CZM/MaEq4AAunsusICYHSaRAMnt0U+KRy6pFA9FFhBiZ1ayiq0/QiC3oVXUqqTh72LzUQNW46NQ6LMVp30k7ZE0mBpNfYu1RVlICo3Jp6pYBfojb0Pu+VMLRFYQWvMimFYutWlFcC3HFUYI0XS/HP/03Lu5DQuJ7PP6fhMR1IxMTZiYSZiQmjSCq/TXBqrVRmK86SaOf7O+WiE5bicnWZFIwmRgkEad7lr9o+SXjZxle6p0+pKO1sPC+Azty5MbkRVD7tym5b8V2ns4lTNr3flwGA4QEXMehbo3e4LGbXyAMhvs5k3HdzWAgNxg5M47Mlx6eZ/24hULZkkLeDu4h4z418D0/6gXj3VIKZSm5Zp6Q51lumYGzPq4QRqncx/uCiaO3t18erKe8qMGpr6yPLxeb7hvy3XmEt7ZpzrvAU26OizsUG3s4Ng7pGctL/JrbKE1qDv6b5L6L2T0W14N86X/pTMhIbMA25F2pu2b5bORb1c11+4XzvnkW1C94aLq8tNZdN9I5bqRDYFA4ReOEiz3QdOMdOQ00BZptqPiVEKpP6A+XB6ijl+glc1YPPlNmw+VoyQ9GxK4+xa2hOsrXBLtV5DuXBRfQRoMTSxqcVPbBdco42FOmzoTSU+jswVq8PViHLwbr8WGnBu/bQBuaoAE0SwNosi3umYbYEoppM01CO2kS2lqT0DaahLa0VRgoq6moXlNRla2KqWDraKSfqHmhHE8UBivwn8FKPDdYjecHy/BMpwr/sG346A3NRp9qNvseEBjoHftUGxqjnaJe7RSNs7100Be2D9Bnmo9+1nz0jebT3oqe6SstRC9pIXpfC9EbdgjQa3YEqvrvQlBG5eR0R3/4a+jnXRn1p8oH/7SGEf2L/gXzndY553B0TUJbSr5N68k4aPOX7hDlaIHugUT27Q8DvGZQ92GCT9Njan/kqru9+4PGawpN0JRERe6z1UCTqCZHQN8HunbjZu2m5e3mce2Whe0+S5X1TLttZbt9WZt21mO0/Yn2f4H9B9puCO1HA7cWrvaDdptAh3kgLoWby2HeWpDngv8u4LcDlK/gX9MGnab2h869k73c2benOk/1+nSc6fWs8TKDGWp+0btkibd9OydHTy4VYOwf0OK725+LDwhUK4/zhCf6DEpjxpRFJBeYUhI/OnVii73LL+aU2VZ/iK8l3/Oj2l+trP+B/4+hDvHckQC5phsFtCpvpWKAv+WOBViV8QisigLwqK29jvYDS5BzuirhrdUpm9lj41xHJW9bFc4OeB9BINuYTnpscqPuRNp9/42uzsbllIRjAVNv4AAshMwC3GprJfgV4B3HP+o+jIyi2SMDdNyQ2JZ3swMdIb7FfoTBqW6IbAO2GSA8v1IKA7BcW0pz8e2/RmNpW8oSX38gABc1pJh8Bt43gB5XFzjab+qmLxOArSlnAji8qBPxA2s7bsCB6gZG5QwFyh8m2Ips1gxLVGkd1AWQyY0sIeJD0jrX10bpBmlihcc6ZACTMhJGmsoInK1x++aqAULasCsG/plRNFgAOaRWNgdZnm2kecX061S/LazATiOgtapdHdQakLUgNeXe/Lbrolb55oluXpRfYvSTUcZc1dqhknPMWHHF4iPD0JZfb58OOpUpQ7VrloLqRm+na2zcVTZRY6pHulG9La6y+qh5HWe4qurnruo9SP4LTmpEaoCYierT20ptkADaiA2xxEAyw9Y4+dBGo0BmJSLI/LTdlpzYYSZQuzCZDZmd2WZShIlregqRJRsuLjL7s703c0fWfm6iPh1Z2/RZPKJGsULMzrzqe01aDTZ6uoH1kb4h66xLIcuSdSapr6aNBBFRuMhkbmxq7mUaXpZhThau1XP6TW2QqodLGbWfy23pNdoTftEytg2YSIw1syGiG3L2OF/kIEALhwEo6Z5TjDIYib60AwW8fOSIUtJEUqyESxQybNoORSvsFLC2d5HCt6SvimN+s+70sz7Px3/E83pPaLnqqjJFiUmMy/X1WSUrcw4mlqZp6YayWtqGtFWjOCvJLAv7tSQGGJ3+DkGEwEhYf4NZdHE+EfbhNKXjhBSr0L3D8iJL16RuKFLCj7Kjf9wQ7T0d4zqGHP4D18ApX/t0Wm6to+Uq3pOcOtYl45g+sQswUoYRZhEQ7n3pXa05TDDz0MKR/Xobq74UCK4GCIcc7PCosR6kFgXqDaaBrlHw1TiLpnTspz17zuAw8foJD02JBv+Gd/lQhgfLrk1ZDptdTWWdGuuwZx172AqYdEVSpZtBjbO49kHSRnmInp51sQO3KxwOIZgbczTsSozBxBgpZSokNxFJK/Y+tPBsJQrypnaMJgybuG+Ilw5hOAz8UfimMndZYGmoEy3S6/GcL1x0HqcZg3K9RldNS+zTHLshUdh4t22WrCenhiwpnEUf8IRSVNCSHdgKpbi13taIiMsotcqVdXFE0G9kb2ePIO24R7ba2N0SRivslmarpYcxhpaiwUBkNajD9LweZRjlSFoWQ3KTmfIhZpTcSamOynJXAktbU8JqltomN5V2Zw8PVvipPo/qJiY3adf9LZbodwJrDxTjRR6bOj6GhPpoCPDWNV2StrilegU6tfjo78hOpG07qKXV4eUBbcTKuwJT2VQTaUckmju+SYAQqBT5EWGlyNqDmkt/k1rL2lJRCxEVmH3oX8RhSeFpuAwuhQOAutxEfyG45KfdWfVYQlgDqVHCFdPLuNGwpIFogwQEu3e56bJsixAPqYNoiPYQObCzhREW4yYYcywi520YC78f2+NoqQy2NtgjW2iasLIDYLQaV3EESaP3TDYoCL6safNE12UG8A+FQ7PWYDwso6z8mPMOwBYY8Fd4CU6Dg2EOuDch4YgEbt6u0WYqs9XJVTisCXmHumA3CV0ZUvWZnXED9lq69OON463zLY1Y8I/GAdYnV+hbJriSoPUGQ4fif9N2qv1ZDlNhZnimC8Z6v4kgGobbki5V2FYEJRHLwtoVbc2521HVYhwaqCtslavHwevVuUs+U4Ur4JXknKYBUqbubqHVArPVwc2I8komZs3yZZJXEETQAqLukZJVD+WayaUtzJtMzQSFSuT2Ft0eYl9tlZCYDIleEXmCgvcoXLbxWL9Y1/RKqIKoeAkxVXwmJxw4Wcqnlh2rWAZM50x5VJhBYdSmmytLpsttJW+cei/GlyzivyZvT3hPwrcyEGzKjmE6o8rKuSnM32q5gZsLFROFDQYfVHjGuhm2qGQLdg4zzExMxYiraZ/mWNTVScfE5Qm3DQCa3bThdw4XI+mQUqKq2xCqBiPkskMiziIiqrWoXMeBlgoLOBBkhICmPFwDGNzeDaIwU25riH3c1kSZaCe/+RrtJP3z/c86xte3wiofO+/1p5Y6ouO+3uL9CjvgvfDkdHeJyCWmPAmbks9lb6uZn86L22ughHHJiLKyA/CodTTEMa5HppTt1sktn8XfgYHMJrVzNuPYSiiPzP2MyTD0lEUAkLvLgbTa2QAZ3Fe7B0TAg1UdIIOWYM1Rt06Di6HE2C0aKAwXdl/owjaGd8ML8ETCRTMtkSRLplgiGI1saZy1xbTdTVsvhaF05yKiUF+Vw3GeSdvWoyYifCZKQRRXiqWbzSWaLSPLmrXdL2KTHflZyjyI4O2d0Qu1BqDJBDyGiWzgCsDCYAIGbKaOEqbhSfIEE5EMkzdgwBL+2Ti78KKddmR7iDZGHBp6Bv5XBp9RYPAfuBOug9/At869gY/A2hgDxglD7BxbGjPpMM7ud87CGkMPIjDWYu7cjt3LYrnKskMHyzhtHo5qYA+Mu04ewIGwDkNn58AsqXeU90qtfF91fli5jCil2J08TLSkHSo7ejKWfxehcfhFj1U993DWb27l06MzajwS9gjISA7J11264T0LWRlOSbNcQfk5V25sLWSaJF8UAQi/3Np2TJbBBwyqT18vgO2Eaifqivq0UQJFV7EETFqgEU4YiWBjE6g10P6erEPgtQ46Yj+fAUlbFMaK/PG0QKx1k8KRxFoIg4YIUrzIc0I3Z/K+g9xE4+D9KI2EdjeqQVrRrkZpcWmxG+6SRhilK/pkOPAn3cv5JNc4sOWAU9n80NCRpzZBFIowrH4n7nJz3GU3F5MriXYigQMIrBPoE2gQyInMvf5tYmmYH9H60d4zOLbQjH27IU6MlZyPY10a92hLO0XzEeDukxHNiHot88P4gva7k0BXpDFgsSWqSK9lc8LTNa+burqWWd9hmDLbtKP3JVJ40Md6VhW+Bg/BD4/Qdey0pQOh04jlMNCK9ZMHjRgmXlC4oaSGdKlLUUUrH/CZImYANlx155UYInwR1lIsX0zxdoXT+m+kl1PtPxPZm5V6bW2Ffo2+rq4KIQwEC+QGA4Y4rh1ffGERRv6EwOGsuF8QTwGEywYVbuQVcD/gT3ga8Or+JA0STiBst0F0UodieAwU63squl1Tr2osvMuwpDDpVFO44JphYk4T8kJqkCfI87IRh2c3wk1jhXR2VaWKBnq4anMqt1dd1WJAq8YVP0yvo3rd476qyGDAdMtoO1mvnilDort2zxCoaevuo7eVCqxbiJno5aJYqqWgG1Ggtg15OaklsSYYs3AcCmPVFPMTlzWPIYlUv6K7laoKsnJhJOKle4b7Vxohl0Gf3LeLz9dwMuk4HMkbUtM4YqRt7DreZxPIllMF0m1f1XK7CZmt2qCWnWJ4/c5nW2h5VTXTwDQccMJjmK6oYUX3+kx1yLYBp26Z70M2q08HidXNewa58x6/APDHAWsD9m1yEg1Qz45Y/LnCt+AVOAS9N0sLeT10cckCDiTQ4E/O2mJl5g00dkFnF+x1yNdxSD908v6OpvpZWWfKdsE0y8KD5AkDziYmwqdoq/4OMzFDDw1YIFMstfAaqphQTGGTQp2eajK2X86Mx9DvqkHF8GSgamQ48NRLe+tkuZEL9G3nC2o2IgNonZYtc9U277feSR43n0z2XWO8U+GtcAocDDshfKVJkVcpUT7DgANkDHCNwevmZyuqGeiSpLQKharYjgXKa9eoeSAfmJDa03VSa+58gta/xycMPJVuI2v3zOmtF8zck1RSiAIXbVi9p4RRmJnIPhMTZT9uG1BFIreTEKey0LRyBj6GLJGDiu4ylxUpqre0sjOdyEBH3+mybseGAXFaLkgGYkj72lIwtWEoDY8R0XbWgorcTwgLdoD155tNiIBAyOVAnKNAThcEOp8gt1TcQGyq0PcaTdHuVYXwbI5sV5rk7Ta0+zMI92rvcEgvS3f3OKWqzxbbqjOX+FVPuaCvpt/0k1Cgvzbez3AdHA7fgc/DmXBwroYN0A7gG/DB5LNmfQT3wE1wlLkgqKEFdn8AS0f/sY9ZOJSVrtMnA/hikii3gK35+NZEkARYIpnlZ0Za2JfvwrjZg+Hs/SnDh83HAW+AE1VUkf2BdTk+z5y0cwyggJ/Bu2AfM2clTPVodBJNXtDPEX4VdvcF98gzZp+W+JtJccH2IbaMsaEtdqVONbSXE1KWsBG7hBkGk1enYMv4HKIGWIbhEzEU2mJn5RTxcvlcloqRuKtQkZA7CZDPDEUrRnyn/rpXK57qb/nahi++Ur3aU7PnK2r3VLzJhzcht/Cv+1phUeELywffn4XiJfaU5iy/bf62emV3sQXAXLdMdpPaLzC+D9pmOV/xK8TpDU683upXjiAT+anDd5F4Sg9WM+/+7YP57DdC1JRLtLOr/M2c4LIt1igMKdRiQ2hUUKGFBUKstFpqV1iFt8xXAC1+hYiHWcbVODF3Y1IEceCpzCtSahMqeGXprseFHTA5XjJOAR9r6CAWNAuzvRB5odPyQe1IuoUyTHA2v8OKc1oty5FluhPhoQ52qDtNpUgR+xrGPsGGM4EEEibNx90F14xASOBr7joSkM8TrnbGbdXuyiBKmkoaFnjNlr6M5DNN8Gp3IF51XmV2tit7se+cqB8UuGwwosopSqpYycp0dB7Ys9Uo1VKkkKKrC/FpaMi9B7yiYQ5caoxumk3bCNLhymw97HiOwSHt2LUgFtP+s7g8CpCw0dtrfoB0VC1TOZpPTrpR1dq4LJeZavVQiha0QHk4tBWy3OzH6bqsgWj6eIcI9mDef6Y9Qhs/X8kUQbu1tSdU5t5dUwOUMMM+ZkGwYm++uEiiO0KgdcfR0U0HHtLKeCgtT4Wf9W5d2vfMgSGf27LXcBk1nmI+duPtC2kJu+r2XhQigwyU4wXBwmG4B1TUWRHBNkzyYWSTIYJkeErZ+XSol3rjwvCDU/a60RGqxN9cfDxoTyoKYfXRzgqtmFybVftGJlERNTG5cMv6qb1y/5y7FHchFTHEw2ZCiSsT/h4j+vVAbwit5zbIE8mp6vEep0utUJdSUKAIGImhNEWp2+6Bt8kVE6cdDtcM97VUlndWKQ4i6V3m1IKi/tl1Rqg71J+e+XBnSVs4CB1fcNNA7oW8Babl9sXMc12GFRqTwshve8fgNaB5z9rzdGRRpxEmIilsdfMFkSUraHNFYSamRrHit6IhfPBBmYjZSyjOt1a136dSuYQeG9mDyeLZpXhKwkmEGKvYJxrKqRRXAzBWxe01waQyazIPEAp7MJo6Zdtu68qC3ThRCytbZVF0qJBm89kEgivbBlKcYcZmzFrJu1vR4hYSskgFrCSb9RkK0+JhyrEVMrHMN7CMMefXlyQqRdsCttbIMOKePYsRnGostTkePiDS5XhW7qBoRjGwlHH7V6y49f9rCA1tJ3H0WSU91Rq8NvCwRomM4aqsphv3dYgmTzTYOSS+QdDf8KSP9YkYTb5NmkyK/ZlIZ0gnPWLLjFOok/jfE7F3N8H1Ur5zVV3MGiyTDDHhJn76DicgYDutsb8dUjG9rTXvDoCbzQOscvc+TGGxyogayn7NlNOSWX7JnB76nzHU+KrUI//Gbnqj43hu8Z1QUIDStfwqa5OtL8mZpCsTuERhCFFU826a3V3P+q+ea3zY+tmAMeTgFprYlwzD7r9a8yuAF/vX+DqshRg+BffB5bDR7HX73H47d1k8p4Ea7AMmRtz4yAn3oqThUya8X/gKZUm4KwWfUXg/vAinwRHwT/gFfH5V28iNiaGbhmEbHDZOsuaBgJ/1fynvzuSujFcmIz5YwVizGXLJQtgIzbEGp95r7yEN9X/5FeC7v/U+qr+9nhN6m4536F5PCK+sStPzAxs3LrDhZBu221DZ8M6IL0ac2fCt6NPR7RHPsWHZBvuTTaSDrNuknuOm6YrF70TGh+RuMy8K4GaRRC+TRu/X0V1Oi9MCWmm/zubyzs4ppJxVrlSGrGvLrdZQYG95IBAiWsuJxJBwUrlQGDIuKjcaQzlby3NyptWMKq+pKf3saCm9gaKpcS79uuzREwDCqfP5kuO5ON1HrB/1pFHOF/g5p1vxRu+JbdwAeKR6v6kv9/4CqndOoP7J0Ow74haVrgj69/q+UjtpYquSoxwcXaLg6i3MTrFJ4/VnNmSDoIrg8VZs9vE4XzoMqdGiM1h4iZDmc1k3yFgi4UQbDTqiU49P4vKWuytOnfUk5ouwrreatZhUZYrrIeQRyCAPeqvD5/Yr9jHur2Otnorzs61rLU9yT5zwSobcKRXDUdaapSbxVj9it5UWy+uqPqmSuONRHF8d6wnMv1S5AfAqrUvPWU3qXScXmIfYKRnEXg03bw1e99RAv4Z85fV/oOvaVtF9G3BVicTX35V+vLnKmnL2ipZYBLhOAVweUxcNPO8YmHhmLxXv9yuLwHw/bem5Sg3uaiO9kkjWGy6nqFRJKp2AXBNSLoFVR23g2h2nqJM0fiWvFMGYVKZMsiDc1689sz3smSHba+aiILBc4uuGqI71ED+eVyLzvCLAovHuKK4caJAB3T6SoDjQmochdYN/GVSEonJK7eKFS2WAgOU1XomK8nw2KdDN4VKdWOh2HwdZr6GV3Gt/lS+iDCoB5gluMS/Kpek08NVIEkF/Xo8+k4R3z7kyQUKma53J/LMEwHjqDwDkAJ5u1O3cEXn7VAlfaojC2i8+zQQ1G0u0qdXHErYazDfv8Tkh6AtvG7zsxgHA5fv6NRfWPVE/PXiLgK1qMTkgtFKZuv9h7vWBvlKgz5P2brK+kU1krHwB2Nhe9XSQHiRPbkXoA2+fkLZ6KnfE0bWX4hLpweE5U8KIJH/rBqyJY9obxJz4o15D/IiZmImZ2IhZM3O4osaryaSKdCEldtrWbqIlZbmmkSCGrh2RKI0TIYTMqKEsyQDnsjmRRqQ+CSCt7Zp40k32g93ViIy1hylJB+Kfawd+PUPwbqC60Pbr8af0Rqb2ZpD35g3ZBWEQ4BZ2E6SjERqR5gOypWcoBIBo8yMzHanlsQcpre0hOCd7KD6BHpo+qT0MdXp6WbqsRklbH0W6DEAPMpnaQ4h29lBi/NFDc8faw7Cm5PVnuTJcmgrdDdBTJx101JssRpRoNV0uS4WKXLCrdn3z5UsTIVMS0jVeD6F6Kdx2enm3p74i21bFgXc85JxCMPR2Vb4rLYIRW7Yf6/Uv0qkHoY3W16rybRtcTdTPL+8FYeinso/sa6UnEJBBBVxNosLwo244EX5GEzfosx3u0zHF4vgyWsQqLhNVkgNuL51YleemjBAm6VjAssPzTUxEVFQsxLBy1IaJ2Y/06ysNdOAWGsSWrhht1LkOdaC/MU4BXAK5BQkWItRvwoSLEHmGXGyMWDXUVEttceIlSJSkTpt3ZIr8xDTpMmTKqkN7Mk++gpaOYe/Lt576GmioRCOlGmuiqWaaK9NCS61CYIVRRjtktifGmGyCRdZZGQrGu2akGaGRgUlhocoJt8LBYut99MEny21yzhmbtdbGVG39rp2zzvu77T2TT7X3f/t7+m7RwRvT3Asudpt/7qVxOuuki266KrdUhR66F+rfhvvora9+nulvoAEGGWKwvZYZZqjhKr3wyn6XbbXNFTddDY8KFGC7HXbb46SddjllrA0OO+JglKiCiVGjCH+pz4pRHff5lRoA67p3CeqmcoKketMwSrwG/L6d3mD88p8tVpvd4XS5PV6fnwkIYmYBs7Kxc3ByQbil8/DyyeCHCggKyZQlLCJbjlx58g1VoFCRYiVKlSk3TIVKVarV1DjwXTeJtn7zVlCiSTW5T23+WlsCmtoPppQyDAeVdxrmX7LD8Bgbnc/NxqxYjhE2uOO5nlMjrIOHuPuGw4fg/LK+/MyvEDqPBOvGjym7wl3awQcWX3/nMt0ooJAiigPalRsRQCBBgPWcKU+kT8yxRY9A66x06sakIFQJG6RcjCfPksmS0Vk5Xx9Wqubtt7xvVW3/r6C6kbId/4AKnJz9gfIxZ2qgfGxWhXJQRSwjItPBHslLFUgNiJbUkFVBS0ZIS3FIS4DTUiWnpS6RloAKqdtQHPxUcINxYFBR4HqvwlD1gMGhlf7jIPAAcMd9RlP9WyLE4u/FBy8MM393CIi2YUajMdsEekcj3HETHXbmiJ/YOesEw2D1mwtM5BLkdeGSWMq6AYYjeGBAC7yEEXZQepYY0HU4uGJnhZwZ6CYQEb6Lpfwgc7RgJwHNODsKl9gJvwzoDjlBwLih+4hbO2fuIkFZVOyE5Qo8hLlDQOBn5skiVX9BG7IM6/KGuB+N3oeNbQnNM/XXAE/UThEHBAX5PEdxBSINCDuhEk4MQ/5EEzfk+/zv5bmQHBH+Qxd2Cwk7yZlCCTkk6Kb43SRPQEZ5frKf120Tbz1T+oBuXuAfsodrI6dzu7m5aROEayS72H6yk705Dna+l53dzcZxrBwEYJZjYXEvM6uQDDE9IJNCNjHiXmmMbka6Y6DBo6fZyLpUOFpqLqChOmoqHBWlNqCkeBSUTrKcDEdGzgekZEeSQo6Y5AOi5F4Az0jmsB0Gnbx0NjEpQiPaXqkEFZlKcChJlCSndJpsYjdSAgLJ8csR1UmmVRmXz5/7evzi3vf8J/qjF2pZ7blneY2OhoeUDo9savdod7hGq8Ndu2oPaH+4Q9vDDVofJldiuG+37boVdos2hytUGm7akl2p1daS//gbunWnUGXvMnT7GPilsH0567s5pF039ORjExF/Dnz74wfcvengd5f5mcHqsZEo7R4EOMsJLbT2VOgkBuFedTIXSkF4BwQfos3IrF5yEu4bxCoDAAAA') format('woff2'),url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAGw8ABIAAAAA2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABsIAAAABwAAAAchAIKSUdERUYAAFhcAAAAiQAAATQq2xtHR1BPUwAAXgAAAA4eAAAueIspnAJHU1VCAABY6AAABRYAABKe0ti5NU9TLzIAAAIQAAAAVQAAAGBo/J16Y21hcAAABWQAAAGYAAACAvsSjndjdnQgAAAQjAAAAIIAAAC8FwsLm2ZwZ20AAAb8AAAICwAAD3VvxKKUZ2FzcAAAWFAAAAAMAAAADAAHABtnbHlmAAATlAAAP2QAAG7Ii71PBmhlYWQAAAGUAAAANgAAADYY+Sd1aGhlYQAAAcwAAAAhAAAAJA8wDDZobXR4AAACaAAAAvsAAAUAjaApAmxvY2EAABEQAAACggAAAoI4BhyQbWF4cAAAAfAAAAAgAAAAIAQ9AhduYW1lAABS+AAAATQAAAJnkYfHqXBvc3QAAFQsAAAEIQAABs0y50E9cHJlcAAADwgAAAGBAAACAM4gBt0AAQAAAAIAxddkoRtfDzz1AB8D6AAAAADVg7ZYAAAAANjaLOj+k/8DDNQDiAAAAAgAAgAAAAAAAHjaY2BkYGA+9u8cAwPPlX+T/wfzXGEAiiADRgcAtmQHfAAAAAABAAABQAC2AAoARAAEAAIAEAAvAJoAAAJBAOoAAwACeNpjYGHiYJzAwMrAwNTFFMHAwOANoRnjGEIYjYCi3KzMzKxMLEwsQDl2BiTg7u/vznCAgVdJlPnIv0cMDMwvGOUUGBjng+QY/zGdAVIKDEIA7CIMcgAAAHjabZPfS1NhGMe/73NWFqhDKye6Zup0Gdv8WW5NnahRVORqpmXpxaK6yAJD8CIrgkJZaJEXXUR1G5QkJPTrosD+gMK6KLwIJTQsRcrIi1zfc84mIg4+fN/z7Hmf9z3P9znSgEYkftNkFpWqHuVyDQ5xwKEFsF264MYIyhkPks3qMVziRQ3mGXtJ1fe4IXIDpaoHHkklNuYcppYTD0kjLnOt5+MPfGoeleJDNTWg/sKtdWGnPIBV2hGSb8x9Q3WRTQhpeo1XCGGBz+nIkosIqX+MR/j8jurj/7Vx3c9YGe+fxbx+BKUbqdow0qjpEmb9KhSqGu7nnakF6gOS1Tig+hHhWXnSyj15cFKdvL9TXYJdjnJdgSAmUIGJ2IRa5HoMQa2DuaWkif83I0Ccqpt9+owsdYH7ShkTJGkbkaSmkCIWbKAWKD9s+Mk7+JEjmShI9J7nOyUFhXIKDbynVc/hXUpUH6r43vnqC4rEiQKpZs/ZeyN2iz2sZ51tjHmxRdUhg+9yzzj7DM95DrsaxD7MwSYa9zrhl3GUaOuJn7VnUWz0fTX3YdXeIsnwwhX3Ig59sOpeYCE2RxXWy034sBrev47neAwvVqJ7Qc8kgEaj72ug3aXmmT6sBJNIInsxGZuiH4tyEN5lH1bDvhiq92Ml9EJa2FeqXsvSz/vO0L+b2K3uIKIGkKse0peo+XnIMdRo1znvX1GcgL54lrmMQ5xRvzoJFwlgKBZWzciWHmxVv+j7KOOj5rejz55e05jhNs7+NMKqk/cX5u9CBl5jh9BHbYwz9AL2dVbYLdOwawMmliFqL/lBnjDniInWST1AhslvBC1FrPmdPOPzI3MeeY4DM5wRN6klTZxVH1XHBRtn0lx3Iod5NubZmGdjXjbjNgMzz1hLlN9tFH3kHGkm9XFtjcfayQllRRnxqhIc55wWJVSuIFPtYX+jaCMtJEzySSReW69xnnSTjni8l1yNP58lueQ0sDRCPgGxVOpT8l7dXhpcIz6Y/BHu/5zu3X4AeNpjYGBgZoBgGQZGBhD4A+QxgvksDA+AtAmDApAlwsDLUMfwn9GQMZjpGNMtpjsKTAqcCtwKIgpSCnIKSgpqClYKLgolCmsUlRQnKk5WElIS/f8fqJsXqHsBUFcQii5hBQkFGbAuS0xd/7/+f/z/0P+J/wv//v/75u/rB8ceHHiw/8GOB1sfbHmw8cG6B3MeTH6Q8kD3/o77Xvc9752+dxLqcpIBIxsDXCsjE5BgQlcADBoWVjZ2Dk4ubh5ePn4BQSFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTS1tHV09fQNDI2MTUzNzC0sraxtbO3sHRydnF1c3dw9PL28fXz//gMCg4JDQsPCIyKjomNi4+IREhrb2zu7JM+YtXrRk2dLlK1evWrN2/boNGzdv3bJtx/Y9u/fuYyhKSc28XLGwIPtWWRZDxyyGYgaG9HKw63JqGFbsakzOA7Fza68kNbVOP3zk9JkLF8+e28lwkOH6zavXgDKV5y8xtPQ093b1T5jYN3Uaw5Q5c2cfOnq8kIHhWBVQGgCq95OkeNqNV19v3MYRX1L3/07B2QhcA1TRJbYkAlDKWwvZNRJCpztZUmufpLNCynZDHu9kO01iJ21lp4lb1a1rY/veut9iab+c8hQ/5MPkU6i/2eWdZMENSizJnT87Mzs7M7sbbvznxb//9ewfT//+tyd/PfzLnx9/8/Wfvnr08OCPf/j9l188uP/5Z5/+7pN7d+/sj0fZME0+/u3tWzf34uij3RuDna3+9Wu/+fXmxvrVtd57P2s36otW3mx0RGfcWFpkeaOJbnNp0VKVjqpqpLoecBVuRe7mdtRddVw3doSrQlXyuvSmI5lNCTFEYBTGQsTmjtjc2ot4VyaaCMzgDcjQl2e0oqfsziBSvQDQKXhNwzPw6hny+pQsuGJ9KUc5m/OAD53c0p1y558xZhILNQyEK6IxePMaa7mDpINea9qz+Bok8kmbDfFmH4mJVfT2IsWT/fgquJntKd12JuwX4pHpJ4pnnKuKJ4b9SLrKSoRTwNsRPGaljnSFy+N4cvx6gbiFC1k2W8mF9XwrD63nO3vRUZsx/nwQvbQtu5OsxPnPQYuOOGOhxtqEJSQBnAC2aWFlXto1ze8chYwdampJIzScYRYaV5viLJZNbINrG0W+VhQyG5SSoYRT7hJwNYM7NNzvFdw1UNpE+ZbZFmOaaB54CSsTNsphLayHLXvexloQ6iUw34K3brFXLWvecnLI3NboiXWY10PnSEvaLjgPwUm4wxkOlhPbKUHQZyZ+42QGN/aiVy0G+foLjhV6lha7uX0tECdhvRVh9bq5dS1IENoEznldjrBW4U5EvImDmEd0ry4tUnTxSIwdEefvvisfdCFG5GnFTwJpgoxCS7QvIzDnvPVM9BLiQKKgrQOV7fJEDZMAXd7uyR7FQUrc7EJuz3m5VfKsD9gH8FSlpRpivKKaYmVG+ZB9aCgVolTFirIuGD93RZdfvCczMUTMhf3ojrMfp5CtQpGqklhx8hJbQYZctDCJbs6uBZjNJqLuetC/ibSk6XMpV3kelvw0SwledZHpsiCJ1dX41IgulypMswQc3VgzI/eA7IqUj+BXTBe+2hHo7u3RmMFeJFsjMRLwaRjKFNN2eBY7Ms60jzEeprGlxfJJPSrKkU1Z7mX7+Ew4GyZiaBCUj2dxd84i9sF1Gic2SJ3+W/ovN0R3BA5605GaQ4y5fBSbIGF9XSn+J5N1ioljTbVw2f7VFLIKCACaVHfeBO/OwB69Cbz2vokVVfIp1iJXfeKoT+NgxpKqwyGXvC0uC/rowWv0JqqMzmGWUjmqUOwBsQEEj4aIXgjsJXIacRhW8mea1OfBGyJRRK0BVNseTUcd9nkS8yQBFvniOlyV8ef7KQUXFdq+mU8f1R6/VO5gLKOUcVQVNX8/HQsX9VlRmhrvk40lWMd2IsUcKYVUFkz0emCGeF9V/HX6oT0IRDrGIpI+no712B7M1d4haU5XuDFYbE/7Eo5DfRjSJ5OIRnUb2Vb2zsnzkl+SqFO3UWJLfrabYCPgbd7jeqlTRDI5YZ2gGIIMY90jRozXzVefBfntqneC0e1+YJhrWios245Uf8pS1Q2dLwJl/2QZRJq8tY39pKQXipxX9tbh3hBR5dBoruxBVCyPHr9OQ53pgplhwOhCSxuhO7W3aew1Siu6tXSre6rmYaFVCTYYcpWmcxIE6MNoM2ZOm2smgD5U8YKiJ5IUQMkb6zmZDZBTwcTRIBX0OpPj7/rYgRNBbxyT+ppWRCO0aGkEk7sqRHybKwpNpjWprespnEY3dKtqm4lmplR+0/GF946Ov2PGc27xUMzQLJ8VWVnk3dhRd+NgZEZVigrOUVFRubMtfb64iWwQbhV1DNNHVnG1E2Db0HN7Zry6YaoDRaXVE6yHGCo67AJTTFy16MOQWuKqsgHOeuKlzayaWKZfXSzntlVFtadi1J5vodDLLBmZrRleZsvOFToMVfRC1/XaHlBpGkRlpxTrkPHVw6CIYvM9CGb0h5ST1akna0STM2JZi3toYsMvvgdB7a2jZO3/U1YrVlPVNY2qkV/7cVVzZoE2zHJt2EbyhqkTwPqZlFTa8tvvUIa2/HPAn4dpl2DkpcJK+OYbmNIn1TWN0SDSrUrmmGXzmiC0wfvahHYTxDasee0YLrSj42N2EEy5jRNgd8MzcV6Qi9EmOh8GMXo9ehOw9OgtMqlZZGnrTNUvxJs1rb9JFDNhtNGLmUSCcquFU2/JKUOjz9tw12XtTx+mApaXc6vqFwxlYrC9y1I2p/Wfyv8RjpxMHydZLM8i1GOsB9Z6/u2U2lnsvEYXqzw/+xOySIdGRzU7dH6hvalOAfA+1vfx90XN0ceJU47RKErF09iL5PvqtCTcD6Zjp37b1yldjD2DHUSPgSVPfU87ibLwL/suvQ65TmujGL8fFEfbx7S6T7S4JwHn93DO6lg4bWGjvEdbFSfumq+LnMSB516a6jqkLy4XcZbapvMwzvyiza0r7Iq5/ojiZoE9oORFV5xLMW4Sk+MfFmJTqmxs8ngHkvP2OZAkP4+rhXqq3VvQhMZhF6/4BRfN4CmS0/CR9S1bbu7ACXQHayw7DbrXTa9UL4IfI3MajyqlPhaPXHKF2hVf4bDQEYrzWyiJQK4txFJiO5WC7k67kfkSyVpcoJMBnWIKXmcBt7ITsLVA4ZZOjl8t0AVppu3rqbYvoY06cqpOZW/VRlFm3TSxhqbNz3/JhNFf8gul8pbcw43QVT8lxYUdAN9ZiLUEWPKCLPkvhv5kWgB42lWHy1IaQRhGewCReNdUkIvwNQIy0MQxxnjXGe+jJCpCJzRjdjxGWFrlRsu3YDu4Mq/Wm18p0NLvqzp1jkN/rRauLQ3PIjStNpS1jMYi4c9Xwm+xCCnqqAtCTXRwVSZUyxqXJRcXJcJ5qYNfJRs/zToqZgdnpsapSXCLhJOixnGBcFTQOCy0cLBA2F/g2MtrOHmCnSPsZgk7WRfb84StjMZmhrCRcbHOW1jjhFXexg+4WIHGdxCW04RvKcLSHKEsbBRNG/mcRs5Mxq+zScJ8Yh2ZBIHHCUi3kY4RUrOEuSghuRHf82Lb0X9eomezPfsSd46cKDU/8xk5zafkjJpS43xMDvGQHFMhNckn5CgfkcM8LA2byQk1osKKqU88IoM8ICMqoIKOM2T8Nx5YXVSehumq4kcuPd+49fO1Hp1q0w/f+kw2vUbXMO7Vzd0dS+1X/Ida4zHIXlR1A4GDaqMbCt4rJpgQgg0uBv5K49373eeb9qNvg/oQ77O32DM2WIGEAAAAeNo9jE0OgjAQhT+7ctljuGZtSIixBIEISjHRw3ghj8JhOIHltYJ5mcy8vzETezNhzQe7+2IhzNuEQ5ij/uN4oRc8rRDvjiGxUXPTPSa/EnPkvMmo15znwSt1n/Jarsq6f8tJb6T1lGrHfZd65qLEwFG/Tso00uPPQqlaTrcAQr8lpQAAAAAAHgAeACYALgBUAG4AwgEcAZIB4gHyAhACLgJYAngCmAKqAsYC2AMUAywDZAO8A+YELgR0BJAE/AVEBXIFpgW+BeAF+AY+BrwG+AdQB4gHtAfgCAIIWAiACJQIugjsCQQJMAlWCZIJyAoSClQKtArQCvwLGgtMC3QLkgu0C84L4Av6DBIMIgw0DMoNEg1MDZIN4A4cDoQOtg7sDzIPWA9sD7QP5BAgEGgQsBDaETwRchGiEbwR5hIIEiQSRhKAEpISzBMUExwTQhOEE+AUOBR8FJIVAhVEFdQWOBZEFloWYhbMFuYXHBdEF0wXVBduF3YXnBe2GBAYGBhSGF4Ybhh+GI4Y1BjsGQQZHBk0GU4ZpBniGloachqKGqIavBrUGuwbBBs8G3gbkBuoG8Ab2BvwHAocKhyGHJ4cthzOHOgdAB06HYwdpB28HdQd7B4GHiAexB8kHzwfVB9sH4Yfnh+2H84gHCB0IIwgpCC8INQg7CEGITwhkiGqIcIh2iH0IgwiViJwIoQi5CNSI6QkBCSIJJAkmCSgJLIkxCTmJQYlECUcJSglNiVQJWAldiWKJaAlqCYQJkYmXCZwJoImiiaSJqwm8Cc6J2wnpCf6KAwoRiiwKQgplCoIKngq+CtcK7AsLCyALM4tMC10LaguAi5YLmQuui8UL3Avpi+wL7ovxC/OL9gv4i/sMAQwDjAYMEwwYjCSMNYw/DE6MXgxkDH0MjQyPDJaMmIyajJyMnoygjKKMpIymjKqMswy1DLcMwozEjMaMyIzKjMyMzozQjNKM1IzWjNiM2ozoDOoM7AzuDPiM+o0XjRmNJw0rjTANNw1SjXiNew1/jYINhI2HDdkAAB42q19CXgb1bXwnBlJI2vfd2tfLEuyZK22ZVuK9yV24sQribMvzkBCIiBNCCn71o1XaF8XtrYPWlp4P+URoNDSlle29lHa/0FLKWlLKe2jO5QubBn/994ZybKdkP7/98fyWDNzl3PPOfcs955zQ9HUOoqCv9HPUAzFUrqHgOVoGUcDlUzGYqnWKOh9jN6nh7/x58AXO/n/pp85tZ8+59QXKfQPqLp/ravvaaqw+A71EGpbSukp1Qml3lBBDcfSqVZjLmNmApZwLpvPpC1mkywwNqlYIwuFnE70Cy+++Sb/zoshpyMUcjhDuDmaysCfQSvCqTkhoyXoWTKZ1mdQaxlzoIB+M2NjN4yN0c/87Gc/E+q40WUHfQ/lpDxUfzlioO0ezgx2vVTh5jQyhckOlB3kSgXYFXaF3Oo0VNRyXYWKpWNpQ3t7Mjm/ZX5en8nE0mnhmmotoI7Ib4Ylv2yA/AYK6BfQ5bOXqI6ZjysvaRx1fwz9XqLEd8fdo56PuUeBNn/M/OzARweeQP/Qn2effRZMH/0oGpF78RZ4ndFRAaoZIc5abmhlUpYwE7EwaIgZPflJtQZlrDmQa4FIwQ3WXKQFctluKCBMolsWPUZ/zZTFmtOA2ZDPZcMRM7zOrRsY/IB5rWY4xZyzOT7ZPjAwrRltSEZmt/O3tmYShZ8U0pltO5Qz0/Kt69zpoYZ3IbhlIL4uK52aUa5LeF3Jht+HZkegJWv9bzYX5gfb4qGM9SSFKNq0+Dpjor9BaSkjwm6SKlKZcqMxqWeTRS4X4XK5JOvRch5PkrVzrL6SNCK8xmKG9mRMjy8xYUwGYRSZNILdpIEAA1YgwAf8MrPJkqFWvO+GpXd3rEsk1rW0jJMPPJrj+wIdHbFYsRgDru5VrPpwTxI/TQpX/kH6U8FTHNxdakl2dydbSvza+tfd1ceEj+KLr9Oz9EnKT8Upc1lJS+OcycGZpHhMaChoHCErG5EF/BjafCFSBdpiZQVgrcaCVVZgEGVMbsjQkr5yZmD74OH+3g5wOBCMnRv0w85iKGV/o6f3l8lnY9nUxvTRuVRvb88FA6VDQfC3u+Oj8f5sZF0iFPLyTxxqeiIHWutEIr0+geYdmhvUZWRuyO8j00KYExkyGdD70uIRSDIqSo3eS9XkPZl7BSuGCEF51759w919s7N93dk/X3vtnyfjEy9VKi9NxFFdE6orEeuyQl0roQJmQzRzWROpN4xa2CzWmiRtoLoROAJXIbiMlOp+o47VodpkvhaSULBizrUWrFrEvJEAO7aWPmg9IBuUnm89yIx1jLKj8IW98nBvhP7AB+hIb1i+t3nvXixjuqk8vA6vUUo0TxQKkMo4qZSW40FjtsqgORoKoGkSyGVQ+xl4/cGBB9HnD/jyIK6fWbyReoQ6Smko5f0aFgxUKYNAshYI6QRhpIVM3tCIZZFG07NxI+O1YkGk95h24f7BCMdgTsA1mp94PD6zrxu6+O/A3ACRi0TuoT6UlOJ+qdKAJYqIcVHabRYlnaxexgEiHQXNhI6K+ykG1yOUZAInx386jkRvFpVoRbw4SeadB/GiSuvhWCvHSitaNZlgSGhbVs4ZOpdtgYBf5L43jvf2XrJhwyV9fccn2idbWibb2ycTicl23dZ/27Xr37YK14nhD46Pf3BYuBLYEugSRrJURqkeYCQVqQp3h6BjI4WMPvC/j8S/k5+ic9NrPnJqslb+ZwhOJ4bSaeP0DZxeWnGqqlAW8gXMRhgwGRvppgVwtYBwmXi8kAm6i9F8j2KsITvbWdqeP/B96OXXTz3RWeiON+Z9pZDH29+aPye77+CzEwLuIouvw+9Qfy1UpGx7Sg86PfeuDnQ6TwvLtagrHhvnkQp9Iz6Zj80TPGEezqQFOGKQy6RF0YMAEvGHZK6Ixp+eM6wb041lwz2RSG9TMVcYGcpli+pxw96Jzm2FfFOmp2tfSRcc6/B2lH3FYKDDt66UTXXkI778TGo6lxsxS8wzxc5teUE3IfzQPoRPBeJEZ1mjAbmUk8sbEGobCI70VW725QCJSjNmaj2SjxfxX4Py5tnZScmvbirDi3xh/U2/gjH+foJzhINTqE0fFSpb7GrObjf4WE4mAYlPXTGYOYOEYCA9T+RwHQZqw8aszFrzNd55ZcuQdlS3vq13arInWDZNx2EH/6pTkhsr7u7sOrdXF93Y5e4a3tCzZsrXGIa5iR9AomOhXN7XJYwR8SqFaGKigmiMWlOQU7k4lcqE2NWkrg6yyrH5gtFa3/UKtn3u3GKi+f6+e+hALrurVD63u6mvCX/68UfXs6+jsLsb1Mk3aFvH7u7OfeWJSG+0qReTKtobEXHza8K/+nIDQ3MI0TJhyiBeBF/OZ4YxKPGfh6/xJ6x038TMqZvRGBhS7100hkYqSuWoYjnyjyjIopCMcseS4EjCu0k4moSZJCSTmsYc16iuaAKcpo7V5ucPHYrNz9dGmaufnkvsVa/16r8/x3WWMk2Z3NbO4tZcJpIpdXHlXF9/Ntffn+vauLGra3KyS5efb++YsUts62L52XR6Nh9bZ5PYZzra5/NwW3c6XSym0938/YPthcHBQvvg6WgjCXISiQmTp0obkUdKUFVsSzAzhurUFYnzHyJZSueW+gidhghZBBJ5ajQRqMS/CdMCWQQSCfNBsBUlWK5T2gf1VkNFqtQh4YxFp6FOdNKnEaPVX7iq+p0/vCRZaapt8QvUt0jbDkr3oMOoNghtE9Ff3zizXA3sENvtX1IHdV20L9MMRO5TbfAg/AZZqPL7aJboykIuZJainwJcyv8Uwq93f238Wsm148KYu6hH4V14jNi0zrKOlXAsxXBaYk8xcopKbpmPYRrgWYl/uuCbfA/5fWzgyIAg94qoz0fEPiVin6FcKIc6LUKIfwn1e/k1uMuvdX9NsGXegceQLeOimpC9728yVHQNHNLMMWKXZwWpvFIGaqARlpnr3w23NgW6C+midty8e33n5kwh5nPP6EMC1oFJ97QEM8FUsb3Z1zHXOp0rjEXc+WDzCps+t/i/mBL9H1QHNUAVyn5NmDMNcK4ypzG5XCYNw0py0JHjOpQJkLMJjsWmeWzLfDI2b7Ai6zxJ5q5kGWsG/OEImkz+JQsMmQF6NI2wiKtj2DSyx5YZk7Du/r17T5x33n17xgZDHTrbcEtuLpOdyUR67ZJej7vZN33j7OxN09M3zQ62OQcm48PD2ezISHbDwn379t23gK6bLooGQpHsfLFjS9bXmOLfbYzPFWdvnJpC9W6ccpW8bw13dQ2PdHaOCGPXossNSNezyLJqKwca9qjgKhWMqMCkArkKVLRUjSwbpBWkFMPKKxSNB4/cEswTJSRU5iuIdyEDgYgPuR4MMqEY8GwD3fwQ/72hefjmNpfEtQ3bDE88AWagx8Z4nsiz9ajfPOpXjzggQmXLPokLwi7uw2HYF4ZwmNJHOL28Im9rgAaacnJCv6VDGVGYYcVp9K2QXT6o6VCzcenreoD81rZcIt9X3NnOvwEQLLgbc4GvfivY7vF2hL9OP5OeLWTHzRLDbLFjPguf8uVczpz/Vf6RYLvb3R74m6jT6K8TfkV2hMvCsRqOZSquhqodIakztpcTGAEGbV/Zvv0rC+uvbu2Kbi+NXzE2dsX4FZu6W2+a0e24e9++u3d0thdbW4avnpm5evjczmI/ogvGz40IPwpktaIeFUaOMmAsKOTVHo1VFRWDAtGcMdCv/8mBO2Zn7zjwk59c+slPXnol/cymL+zb94VNEzdeeeWNp36Mx4HahT+hdpVUtOxAM93Dwjz7UZZmWUop55SodUZEtoDpQ3XzHv+sh9v4hyDKvwDD/A76mYk/rv/jRH27DViKYwnCNggtNcjrpHi1JX2g1s4UauRv6/nviTheRDgOU7lyABkEMrfFTTe6ufZGkDSaGml5YyMbtnDhhoqA/SqQWzA/zJ+ZBliYFJBqxSKDlQWg+JVdu76ye92HE50Brmv0qnXrrhod2h5weCX8P2BW2tyy8w7djnsWFu7Z0Zbpak4IZEmEXOtS61y2nuPJc8Xx0hzBowdJTKWUaqC5hgYlGrBSXjUpBN/SmNH70LeAHo96Cg5OTfH/ggbN/xfkTmVhgH+EEtuj7iQ2t+oB1AgjF+3aDK40RYxuUs6B7IBnUTktth+0Uk5BV7QNov1gQc4QETGoOzwf7jpsWx/cVxycKmwv6WbW+Q5v6IW/8/rRcwtUtU/6XNSWhmoq2xRyjbxCX8PAAAOvMoC+MHIp4YQ0mueHKsLCA4InAxlzA5gDDGtGoEmgZz9Cm2vvnw7hQV0LRyX8s/wBCUxd+d9Vvvi5sPZSbpDSmCOkchFejBnEUVPQzlfQCK+eEMozBiIXzGUFq9JLga7oSQW8+IHr4B+EzUKAQT9WhJ5jr0pePTYpkfxu4HcSySRq6AF6FGH2qetO3Uevu45vr431QtSumjKWG+RqGWpWXW0WtwqZCCYSkBYXYK9EMjXLX4+uqL0nPwRfPZWlpz7E56o2C6NEfLrc92GqhFipDVYbkZC7a9u2u/buJdexy0dHLx8Trrpd9+zZc88u4ToxevXU1NWjwpUSZYIXjUGFbBM0yxRWTqFQURaMU9WyWbYkGfSBJUGoX/9G556urj2dt0y92dTl93c13UY/k9/e1bU9z5+Ei8KdPl9nmH9H9AsWnyNjNCLpbC9r6Qin8HAGeUXBVGhxmKin0CqbzMqGC5GCdYVhRo9ObNlbHXNPV7rn1u6ZnuloizDwtZeNOWO77t4rjHz6E9mR2AHPFYnLI+f3COOfvKY2/k5RZ4TKZq2LU+zXglZLqZWYRapaAjEqllyZekxowYg4NrAcHX8p7ulKrEvR39v1nYNTfwytidRQkp7uUDD8SxIIIsxc4O8KY8y8hfnIjWSUBOElRnWUIzGWizVUzI2cmanIgxDcrYEmDXxaAxdoYJ8GejWATBaNnCKKEtnfmfmaa7zk8CRhCYOC3MKWgAeqrs/ucf2EfnN39/TwxsTabW27urs3F5TrlIMdhfGe3uSmPYPntesSM92+8obejvQal845O56Zybb0eP2hzu5kc86q8+2c6t8SF+UHRiTR98ayQkoDR9MVmcA8eHoHkAOCsPSr78Jvnp6ij01MnLpaqFdC4x4nayjmslIjMTZwErpiFDgBzyDsVeirJo4of94+0jO1eXp6fqp0ZEI3eOlG+A7fPrN//ww8xXdtvExYo9AgePYRvaF5kK2pCyJpjNZMAU3MgGbLfciNeHgL/84MmoxvDw7SLJaGgPiAYm5HdU1YVmhMrArVNwn1xVktNIGuePWCGCcB/ZYrVBLt52Y/o5V8dMtjs5/WSfS3zaJ2/9LaSmvQlS6hqS5razv1DoHPgODbXZUbDSvlBjBEHDFGIoxA8uqeE5ITu1/9y67vSB7fBRU4h/8tWPkv8h+DGP8j0h62t/rE8eLG5NXxVptCMgj+svMhyYmdf5qCUbicfx7i/KX8A6huGNXVkLpI6jTIOOw+1hTskv+IZGoYrkB9Ps9/EK7hbXO0f2Lu1M8nBDm4eBXYGRtZZUdqGutoVlxlx2t12MNf/91LLvkuYxt4762B1etBUF0PyiB4T/50/KdENQEVWryK+lO1XYqTMJyk2q4VyVVk/QZCqNnv5hn5wHvnCe2q4LPwBOFF1f0sTVYMRbIFEKkCT/V+fe4KyeVzSK08+/LLeF1/sQlOLh4ga14McksQ1rAxASf54I0D6P0Oeox6s7r+KK6JZayBHfPZUfqZSwW55kf68yStodxoBt9dPiYLwT9CMBSChlA0RMtC3Ldl8B8yWJCBRAZ/lcEXZTAngwEZZGQglYFMZorEQBoDd4xzKyt2RWVaB8M60A2pQaEGk5ozsZUn/RD1g8IPfvaxBtjQsKOBljXAPxqgt+E7DXSwAeT4I6NKWwSpcOiP6E8MWTAZ/Af9Fdx14R322ecPVb12bNrUu0UWM0JtQFAwVcmR+cps6uL5lnXm9V3Nw+aymysvHJ6QWGYLmZG4bSAyMFhu1cXHWic2mdSe9v6QL9WS3b+Ff3Q4lB2Nj8R1po6W5qyAKzznsY1upkJUY9lgDnHqRk7NVqSKioyqmJWiGsD6LhwJEOZhM++j9eTzVsnElERine/oP79cPr8/gFfG44mxZHIsocuFEZWeG4zkBi4ZGz82MJaa7eiYTQlXgV+CCB4pol0j5v9GwQZnK43KVSuOq+w/bISfPNzTc3hk4yHbmHE0lxhPJscT+XHjWscFG3SDx8bGLhkYK3uTra2z7e2zrekWb2mc4AD36VyGA7aR0yoqqGPNchzU9Z6JYH6vEmbZ8hEZd8dmG7IsJiS2zR15Mvg4BieuGzg2juDIRQafO5UdDeeqKJhrb59LibBo0fhtlJfKlH3Xep/y0lIvaLycRsPaDJxNWbmuERoakZvaiDFD3NR5wSqorfxU6cP63LTonhhbaMxRL164puvQ8OiBIs2fx6THmndlhryV9TfR3r5s56QaATc2fHyk9/BalaZjfdPmQNcw9HvL8bESoY0LXRbo55Flkix7rIoKGMwcbZBVrscqcUhDyzWcQiu/VE7LAcE1n0YA4f2tGNE5GQEsq5nwcCNgQRS4eMuW+Egi5jV4Lb7UlVdOwX1jhdRQRLWRbUg2t4zx60T62GgLwomXSlFryi0ymUUWljFeGbeRgQcZuIABC7OHoRmvtuKUVSxNnAURLsU1I72MaUcUciyN5xhZiw2LerkLAqfx32WBlStOT1xkGtety6+bkdg3dfTsL5f393Rssksmrju/ZTSRGG1pWZtIrG15bbLoixc2T7ZHWvsuHh871tfaNMxbjl0OsZbpYud0Al2LMwlBz6LL24jfLMjq0qgsrI4QkqpYFAKniRuNwjzD01+PxQGCRh8ooall3pSf3zE10NbUG0GW63MDkez+c/iHoaO/J7U2yr8qzGs8vf8X/WPku2ipdNmvUVTUsspDUviiFKR/VcI9SrheCQeVoFUmkaHBKFnRgCHyaflKFYv4fDYYtDsCAUcz8lM2C1/twS08jftafGXRLfblQF5+wKHn1A5txSKrSCVK+LoSPqOEy3BPHmVJuVUpkePOBLmIXP30it7oSE6wmvSEGNWOLzbLbQqPa2q0Z6n/9/6TnZDKImF64NQjY2NUDbd/J7rcivQnq2ZkGLNqhWjECL5aASEX2YoR5N2Upl4/7+ln99wxiz2b7r9Kvsc/L/nb7K3VtqhPVP01qsIolvy1Ur2/hsoxKcSfIcpXNuqdIZWZU8k8HCWryNhKSCRqptq7WSCrdTVx68iMhXlr20aDc644OzfZ0R7uDkx1tOEr8KORbD6RyJ+7GRN9sBwfifEvQ/tQOTEa419ZwoEGyTPEX0qzTCuCYl7OX6djrwmJeXN28/apvmJ0TRD3Fc5V+2kZjfK/rMlLPN7lvhFb0Sr/yX2hXxzp7T0yOkquyYnW1olkckNr64akbuiS0dFLhoTrWHK2WJxNClfSb3GxiU6TcRE5rQlxskYOT3FhdJolOV0dndi9H6kuqzlArZjYxYklNdWB9JZkCsJ12gr4tVVFlQsP/AzMy7UVxkMT0hs1eKREdxoR2ysrSIOa6uAJFU4jagL0CnjgSQlWF/01/TExdaROdUgHwrmq9lh7qrkGj6A6RLrvotXIZkZ0l1MypUh3/WnobjXX0Vw7nQzYvU2h7hAi+YbmgmKzrnkwyv9KXIv4OhpjEzVczrI+q6/g2+uT/NgHBd8HfA/5mCYf+NR3q+Ejasir4SE1/Ksa1E0yrklZwfvWrMj8xM7RZ0Q7J3w6z6i2g73kF91+wLrWOJpI9eU7urvGc7OZ3n2WEf9McykeHxldm9/cphvr9LekI0FvRKPTDrXHe4MdWX9fxO0KKI3G0XxyMEz01uJbMEx/jLIjKuksdiPHypQaTimrNNiVwrZ6OoN31hFc4Zxe3M5F6slkRZ5OwYwAeTVnaJqbmzp+XGcMeuxaj01u0od7ITb2L/8yxv+u2WTRb2Rlwho5wtdfgBfmnoYxy7EhgYRQ1YogflS46kZ1E4dKsCJu2T7V0xbrDU2ROag7bzus4Z8Z7msZiYKXp0fCWdI+iy7vovZZ5FtIEXlZxZIvRTwgdtNt9OfmfjgNPL8HPoskNKnD0KiOBvtQSo20AdXTKJb5UJlqdSUE2NmjcPnM5XB0+s7pq5BO5vn9cBN/AG7kafgUv0+QeWp0+SlqU0nWWpRSkFWUiqW1lkjGWsiwyMZnA499dduVl+66/8GdV125E5h3H330Xf7U44/jNuTI1n8PtSEnfpKsIteIYykIfhIEXnpu8+foz27mn5j1ws/5q+HYqWbsh6DK/4nq1ftIiJiK1T5SCBLIuf8I/xzk+J3DsDA2zH96jMBvRT6SA/kyAeTLBJBxpec0AdGXsYS7AEnEHLYQsvkimIm9IqxBo78W/OTh2ajPF50dtZjDKT/6lwqbLZfMjdwbjQ/Eo/eOzA1k4/cm21QSVSF1bzwr+ljrF6+jbkV9Loud0AfWj40xtvcOCmU8CC5/FS6KM+g5Q6DmYwkQ4W09DCHZRbZgiDJmAcIYeMzhVp/f72tF8IxWYcwjYFIFBExbEgNTB6bQZ4j6A7wJl1BOvDMSk4JaCh6pVO00ck6JGtp3qaFVDQ+o4Q41fBLNbgp7LpUK3h0RFmZTrcFwRNhdD4hTWTDJM3gSw6725lBCb22ke/0Ft70tHoyTm0De8wejQaf1WSKd3tqX08d2NVEPIRmkRJJNeb9O2FBLrthOQwxjru3SNTesUUzCx2r7Zx8FM//7N4nMJroRx2n5Mee6GY9WUmFUNc4VI5/o+oCncESPbqxBi1WPJCb8Yr53oHt7Pr+9e6D3HOuYZyhU0I3yV4zm86N3jcqnphoGD/T2nj+IvslHCt61Ov7T8lTQm9mhhgX1jn7Bx0f23zeoNBUom5gWLhxVKDmFgjG7OLNUBCYmhJgI62++HNYUESSZwpEV/g+Wl1b8g7ft8docxju83Xwh/1+tGXr7AK11ODPznet3GMdVxVRhjc0uUTTIPnTY55Y8HI4ozz9/2LIhJdcNSuzx3lh2U36qzYuUXou/PcpqdepBZfOEh2l0CzZlHzVPe+gW5AfEqUjZ6DKrWXucs9vNrCKI4DezZjE0hoRdCSvjJUBEwquFiFDWgpVFxGKtLNk4i7ArzIK+znC4M11sGx5qK6aLoRC6OHsCQ+3FX5ZCoVIojK/hGzqKa3o6iun2WKw93dHR29PRkW43W+PtMxG8yyt+auswCURrO9VVDphYGoDmrKBTSmWcEflU0CAFOSB7WG5TVbRyCYnGI8F4JBaPCEfkxeBIPKQS0C+T8UCmBOgvwjUJk/j73Xff/cFHtn/EL/Fdv/2hY1/60pcmvzwwNQD+19rbX+N/jr5+Ga9p4nlP/5XsvaKZL6vNfLMw+8fG6L/yV03yu1DZ1KIN/kKfpDJUD9IgqjZpyS1Vce4w55YSMSDG51XNmpoejQg7/uHlq4xCzJWwahvEXEL2IZOA2fgv5T2F8cus6/RjbW3jY7Nz04nobGq+lJvOK8aVa5KBgruzZ+FQyMP/uWNNrMniHJtjQ4mW2eJ0Yucm5Dl3tWRKTtfMmuiwLbepeX0m0evzBjsdMWsoZfHNT8dGLB9NmdUGbd6e7XLRyg6RhzrpeVhLf5fsvbeXQ/o7pPAZKSD98a4UrpHCMSn8XgovSqEoHZXSUUQcqVVJJTOZpLhWUqlUVmykp+t36b1eNFy39QYf+uvxWOl5nxn/tXirf/G+ZAB08Gdxbb9AXVpeM5CGbBoCaTCnQZIGeSHNtcch7pUrh0Jxbq4AYwXoKEC0ANMh6AtBLgThEBRChRCb90x7aM/XFl8um1FpZApr261zVtqK62KrGO92z+NfIcpT/IfuY8QDml8dl7hiUtTWhGrTXdhR/i+uu7v6SU+l0acVX1tb+vrSriajR2k3ueNxd8jmC3aArruudAsqhT6tpMaagdZ0v8noUqsSXm/C68BrEFGEn/sQfjxUguotJ56I/ChCRyOgiIAswoVlP5bRDFkmkyXCCVruSXCep9XgEJbGKLwMkUSDE7dwayNcta7lhvqFLVoc2xfWJvavj/Qae1KRrH7IONefn8uOS0yjrS2lCFjz7q6utjDoQr2x/nGjUpfucLoDkUJsYwf/Tk8gMeAvhkCnbW0KhKnFRaTX8vA/8JrOT/2Ip3QM9SPqSTF2Yh/8Bj5ISSnVCbw6LsEzK9WKrQZ9AL7AfxLu7YO2Af73qA0xBk9HUzpUV7KMd5JUG9Vaboy1ccoCeAtczBvzshIPYC5QWkEu0l8II8DkR1Q/K72ZakQIcljwglt139d8JoKv3doYbzTTnek2R3yT2mTQpN6H3BBtdluDMnqKnpo6rlOrDEWEjy66AhvoE2hm2MtaFk1M+jMUllvnM8AgZZ/BNruRxIQgLUqf6MHz2AOPQIDEBjrxLoPWybFmHHyrpYRYCcP7RNNe2hUIoE8Rf1zhsMvV1OSCR/B9p9/fiZ8Wo42NUfwrxOsgov2W6H8tjl/TqjhZA9nVkGjJQjVSNulMdZUpI0hmFsH7xweFiEz4D34cYgO33jpw69AAoqkZtoCGfl5HQwOP+cQC0+Ah94pFzB8302MQJ36/s6x7iQI7FaUexlEyICdLzlsIVxszbOAH84Mj9DOXojaQb4rtfsQn74n2ZRNtQ23oKN2DOmWDhmtQYi4jGwo1RxCxG/6BYLxrbxf6gHd8bgyaMttKpW2Z9zYzG9/7d+K/gIS6Ga5C45ffJ1WSNe96AbimGgojqdo7qM7QohGUCBIHtbXc95oKPqT6rIo+qoIFFai8Cs2QScXNmhBpwGTS/UYG18o+JXtBxuyRHZbRkzLolUFOBkEZGGXgkHEOHcFzrCq+hLkdE+RXvTcX8OMYTbYK2TUZZVpq1ZlsNpNZEw/kLAZpONcR+2O40aI12w1Gh94038rko01tFKaDFbZQ99HPIDrICd3RXIZfiHNN95C4zKAVreGzTKPv7G5v310qkWuwHImUgyF8RU127luzZl+ncB1pGkwkBpuEK4GhHcmMd4nM+DGRGT/GMgM9Ty2+Td9BP6fzg9xO6QLUC6Cn0HsAOK/2/pll7xvwe2oRHq2+ZwDxmB8U4vvtYv3vkrEmkd5/nPB4lNI+GPVzUdHMXbk8JsbidyMXICPESxGVIKx/vyzav12bM96Qy+eZDqUjJHZKs860Z/2SQXzqQ63TufCaZoc7H2wvpXsToXQ1ggrBSuKFmKsQDpC1rGegSKMnlKWsoTU6tpGeofUUQPs0FctCLHua8p20Syyv17LBs5fvos1ieauB9aLyRlS+tLL8dbXy3bRFLG/2kvIBVL68svzltfIdqEE0E8o6htb5cQWGtqMaw7gGrpJFsxrX+RiziTJQblQrV/YxQY5ioP/bDLQw8EMGbmDgZSQPGanKzamAxDekk0L4zCHsDCE6+YQAqbq4PjYsKGwyN4xkc5L+2PwQ/19D80AZLJ2xWJfZOOFw6A0Oh+GDWxslrq1PPEF/QRuzxTo7Y7Zm7XGHAb8yOE79rRpYRRN//loSH2KiEmUHjunRqk0cK+HUrJqltPKKvhbhI1q02HAkKm4pyieHYdXjWK6H4IdL8T78W4d3wSuSxq+JgT8kpmtPmn9G8BUTi0YSI5Wn1pcLh6Vglu6W0jYpd6cNrrLBnA2KtlEb/a4N7Daw6Ww2ZTDGBZnKBwxgMoDSwBWVSCwl8Y4XcXHaahtg2PXSQpXN/SuFiuCRnSb0iv7wDVNaQa54l4kb95ZPTp4mICvfDz4icuqE0DrF3i9sXxmiRZF5S2KeCK82CXMBfiHwHqg0Sic9A9rlvL2yfCf8QSyvVStDZy/fBb8Wy5t1SsSqoF8+F4Tyl9fKd8CvBN6mQePFFWiwLuNtYT5Qd5I+4uIYOsQ+JDJGhvpgV8FE/aaufCcMiuVZKdOxqvzinxFMsrryXVAWy6vlDB5DQ90Y0FzDuwZ/Ya4gPoCTspaVVqdeaqMrUqecqBkxX+cMNj7ejvB7Bfv+fNHe3z81xViERxZv9e/IKXGP04cu95IYKCf2uDVOjgaHlXM4NBILDnHQyJd73NiO0K+OvCOGxf61a5fF3131zDPQMwB9dUF4bw68UeMd+kIit1pFuRWt0tar9rIzEJAuk1sk5ojgMS3K3c2inPP6mUYlknMsQPTM5TvpfWL5gI8JnL18F71DLB8NMl5UPoTKJ1eWv65WvpveKZaPpEn5HCqfWln+8lr5DnpbVe76s7gCQ8dYkXMEuQvIy+2Hl+FFxAuaE8oGKdMgpKGRYPACXjCwshG25/bbk5/7nPC58Oabk7fckiRXEjN/klHRbyBO8lExRF2zha40GRo5s4HBcZQOWQwZi4IgFPciKYvgPEewVBFtCNwRZbGCsCZOCUlHYMnQj41u+/LeTWtDHaHe0W137d00Fu4I8ZJcEtLFnrHL1sKey0ezLfz3i2voTTefs/fuXZFiqJi9edOee3Y1dYU7+Y9f1AR/cI1eM8m/NHr11MCFTbzZJfAGibUhtGgTaS0TecNkYVzaGbCql83JleU7iU7D5a1mJnj28l20SizfaGO8qLxdvUyuCOUvr5XvoBVVuWJpwhVo8EhWyxW6j/TRKcqJv1fnvRIZjzN4IbEGU11sm4ayI0oZVXZOpdJQtA1Z8uiPOA311fUjYa+iNguxJ7QU1jV1y+owt2NCnNuX31mKcgNq3eJbtBHpK7xiZQV7XMKp1KjbuNvE2RUVN1TiylqMqbA6L4nkqjHc9Xk6ZJ+strFeDUcGg93l7JyI9kcizs7+wUyxdzq9radza24u19exsEYuXS8Z7wh1B8fX5Fq7h7tPvUdLune0pWcKXEJiPmdN9842hEchXuVlhMc+gsccfEecZ/EWxmWboZMmgI1LtFpZPg8/FMsnE0z47OULxObE5XMpxofKt6LysyvL/6pWvh2+J5bPdJHyZVT+nJXlT9bKZ+Gp6rxvKeMKDF1ANXbW8w6pwzhrddrgmVqd7FKd7nobDdVhLkCskkI82k9dUp6KhbhY6usyQA7MizK4SwaDMsCxATQO42FLe0vQVwK6BG+UIFvqK9ElSRv42jhFDhw5btAHPofPYUr1cyllRaEGuRDaQyIqYoLZhAyT2LyweaX7oxivQwypM4TqWE8TeYFMGRkyCkn4hQxx8KoYnrWd0W7DkHXvmv6ddu+2rlpwRmxnZthXWT98sHHoGrqAQzS6Nqq/PxK3DDatCPCJ+IOZ7lwqmeupRW50D/UXL8PBG7G1pXfiI3GtuRrzg2NsjCTGpkB5ygZkkyHzTTTU2IpSW9OFsf83kwx5IvD7gxOnt8m6t+VOF6BTGl9tlE0oRir9q0J2sOwUYmQwPw+J8+WkyJ++AONCeinILuP/leXz8FuxfNDPhM5evgCviOWbQ0Tvhdll80Uof7JWPgsvV3k5kBP0Xpxdwf/IhqduIX38pziG9GqbbOdSH9gC+3ld+TyUlmyy4qryi/+D3vJ15QvQtmST+USbbKFmky2+jd7+FslJwSbrLbcorUHrpPUT1setkhNWuMYKB60wY4UBKyD6mqxgdSoqNllFr5SCVAz3ITE24hx5f/vNLtptNfttcpI+JHy1eKt/LyDhJUhvtCD8uumfkvgfZ1nrTXFsE8eyXhNUvMqVuX0CRyLNjvU7DpbHuv30awSvVHp6zy8lB41SfSpwmWOuvejaNbjb0dfXVzo0nBiJxYbjidFYbCSuG7iof/CCNX4L09ztbOuOeNRDjelEt7v81YWJ4wMT8fXp9LoEvq6PE91O9piw/JwQ5WfVB2iMmP2KGWiWLZOfQjwFptUGkRd+t2T3uUQ7buOZy+fhH0t2X/Ds5Qvw+mq7b3Zl+V/VyrfDG1W7r5WUz7Kngf9krXwW/nQ6u29nvSwvUCb4LbIxyJoeZXhIq+K0WqfUKe4grYhAQu5qfUrY38Rljhfxyt43qxl5H8bZXngpbG7gJ3XJXwyC72UEn4fYiM2Ur2wyG2TNHDISLbKKQlExsBVZLcYPc+6ZLESJxWoULEQL2Y9jLBlYbO09MtqdcxRcCfytnHXmXfydLvtTwXByQ+svJ1qzT/qa4J4DpdFLhuxRTzy8fw365oh5E4tDDijpk7PF/0S/0wX+MR1F1hFfh78QWs2KvPBjkXcsNtop2m11cmFl+TzxB3F5u5UOnb18oSo7weOgsV3oVC/JhVr5k7XyWfhp1S60NdPELvQxABfUyzayr0/62CzC9IOqz6yAELILVdIlmPCe0GITnSHxcGEcR6MNc6yb0yorYlTc8rge9p8I7OmcWhFIQyJ7cAyNENlDP/PjvqXQnr5fgFkIoqmG9tTGcLI2hiw8WR23shG8MjRuZJ7UjRvpVSyjbwFeiBeTLYsXG5zCcRR0Ne/idckkkrUOxI2lcjPSsQYtFzfAVgPIDGAwsI5mztFQsRg5i7yCI1XoCuuvJUPVkn1JNGNdPlSufnHnjAkpcx9Pwu38g9DM/xhG+O3Jj8+JySmXrV172ZhOSNEYXnMxWfw5Wh6uZqhcM0kyNIT59DrzFLIfglQWWf6xssNt49zBLGfq5EymIBvn1O2cGhEvqBQdL2JNZJZL6NNbSqvBDgmWkxAyNlTxec7tW2khDRz0eitD9YFkdG81olWIJestFnt762yjns7OnmXxZW8JUa5AddAbYYLE3x8rzwyxR9ifsIyVBfZ3AA8DHAMYAXgJ4LsAmwEGALkIRaDRyxcAvg7wWfgK0NcDXAowhtwr/BoaARSIU6CBoRal8G2kLnEARSYj7mnOL4WB483NSobsLRQyZPuHDXTsGd2zIS/PbaBnL7xQWiph/tlBt0MrwxJdfUF5g9UKMisorZyyQW/X0w1SPXdCCmUpSKTQ+aoUHpXCJ6RwrhQm8XIdfvoLKVwoPSF9XMqsk4JTCr+WAqrRJQWHFLQigCJMFeEf3vIQNrLml4vm+n2d2zrxgmZXzOhymowul5Fu74zFi+hZZ8FlMjldRmMjsT999CTsp39ImanHyh//jP5hPa0vW51DCj1YGiRRCV1qk8xK6C8pgVValRHlXqVEouSOSGBB8rSEZiXQIJHoZdqwli4VtDPaL2n/oZWw2oj2Wi1j1nIFZPo/aQZzQg8v6d/V01/Ww6x+QU8X9fCsHr6Me7tFj4ikh0v1sF+PRPA6PY0KO/XQoAe9Hpsywr+tVRQkD2XQXDtE9jS3kHl3CN0gJ6GCcRHB1rAQ90LixTIIK38O2BuVPmbAm7Z7Wt0N6FtvlJ7UagyhcMbu1ocKxbOfabT6vhuMtON054Gc5IPV80BQGWbgNGUY+XtvVcskkYzC+7saSnVCxuorGuGkJELWEgjWkiwwGVJrSk2tBlfIAXzIqXObNzlGGY8VK9X6NuT3sRohomF5RnsyZ27EKhi1QttGJW4rVs64FSJfk4s3U/dRR3Us9SxFnbqVPEsAD7NE5n6f7L18n/rSiufPkufPVp8v3gyzqI0I9ewif+pW0taXTgmxu+PUc5CEB2p7Zgi+fB3bfry3t6Wlp6flud6WZA/62kv2fhbfoa9G7fkpPY33aPTUa2QPB3GOcO4HlQcfvEZJUZt4kpAxkxWqp9Of/3watC+23H13SzVXPo90t1CWEcqSFS22+LnPpZ9+ehcq+OKLFCxuXHwbzqGfQ6TSPAi0rkJSbzA1ImCFf4f/zvEtLvqh4KkRBJ8TtkA72R9Tkj4akd21lf4GlaDGyulQQf6CnGblXBPra9P8RENrNZxbiyw15KzEtEUtzWpZLW1yciZphY5xtLq67CGEJZBQFzHeRcj4I+FGuSwOfsFHplQDENiMOYCPGUJ/yAI8vXVw8+gV8+ZtG2h6wzbzlitGIuOeJlfGPXbc9eqbDPPmq64PjvV02KPFAyMDbq3WPTByoGgx9WnVG8cHzDabeWB8o1fQi3L4HbxEcoXsyDPVmOwyNa2RyUkGGw6aiaXFA6oywhot3udFgjKDD+TK4WOxiDEw1n9/T/wTnWW63NlM033uPppupu9oanrklTvueOXi+Be/GL+YnOHyYbiFaaVk+PwEkZaBgjWgD3zzU498/dMD9AceeeSUqXrey/morFkoK0TvFAgcbORTA5/+epT+wynTI+S8oD/A68iPWzU/8f5zeoDwrJhnpaNx1tnKOS6u7/8cvfdTSWR3sNRR6s+UCUcCgVwjbZLMgF5KUw+DjaqaT6iNONLHo0yQCuDd8YCJczg5hyPAqjiWhA6KvnzNUiBxtkveer4+bXr+24cOffv8fzu8buqiiWvHx6+dGNoZbFXxf4WjspbMga/qzv/G+ehzaN369ddPTFy/viXYuvmgu2nwI5kLEBwbF19grmDISmzZcbUDMg6wOzi7HZnv3A0+8LFq7gakSpF2iSXnaxkrkuUBwEuABQhYeJHtim8dPPitQxs+0vaBNVt6D/X0HOo954jmZbiO3fXA4Sh6c+hbB9uyR7r7LujtvbBv88jnI8nDX1tYygeYpFWUjoqW7XjvRabk5J+QPS+jUzIwyeCHstdlmKZY0mdiiKbJFTHSMiFE2jCdNWv1jWsmkB03kUgzM5Lpfv7XAt860TykEWFNlIvSPWTScKyNY03VaNLa8DwgtdSycYiBY33hSF9vpW/TQauKvz06sz59jvvA+jlF3u/paQbdwNHhsSO9XLf7xvXDnYkhqNg9wQEcn2NZZGjEQMQf9pR1LotXxmlSnEbjxbkv3hrNhVjj/8tsl0ePOHbr+lp7RiXm4UTPhYODF61JDJslBz56ILkmFFoTaeptQp9TW7qbw23rR8MO/8DRoeGjg357jA9/6HqYig4nWoabm0cSieEown8zwtBtjHxlzGvzhRdijSTgz4Lw14TGc9p9/rOkErxw8eDgxUND5NrUF43iY2DwVdd/dGT0aF/f0dGRo/0L0eGWluGocBX6dKE5cy+yQSLIEy2WgwZkZhuVsoonyXnYitKj9NgiBU6qU1QiNpbT2tCEI5lEyaUNVbydUMuKW0ppIvHjJGz4/fLk6MvnbZKJm8LJK6+c2rJly9rXJBLrlo6+g+XywT5/nadCMuauTJBcKLhvLDUy+9O+pey5ZU4Lyc+i76Sfp2JUoewJgSHK+XF6ls3NGWwGmzwWdggZWlDNz8okM+Jg0mkh9f80eVqny9vSr8zdei02moj6TR6LD4/otRWJXMJXuTwpjkPM60I0kPwewVukRpEGS1k0EQOHDD5ZJdPLZdhKnOUimXg8E2Eai6NcUVlpDHAebSMyqCs6qQk7VwhqvOwUq53RUh3HaahSpczKwZ2NUsyjOBHjE5hSk69NLRvzltHf1vmZqxIda2QjpKtDxwoqrsqBRHSU/DvCSyfVX47mwdDBZTAd3RHOzVasSc7gtlrdBkbe2Zbwr6BoErkVq7BhPMvAV2QhvR+Zt4y+tjwB7SYRMatG+MLKvLR6fIhzEDmT56BxJqh25AcHMu3tMfBHOAPtJ0zrt/lt8kQ0eBquXca2wgkcZ+dcn77GCFSdKXgGPk5B19RraGD0hwIBkm92RpbmaYHE/Dp6Omi3B3FqmsjfbjK+NqqPGig3dff1GTQZBRcwZmSVaJLLRDNRe5uUg7aY3cM5tXawQ0Wlw8cEisOMrRqmpJYd975MvWLcWMzXxxDdaZXbFR7naysZun7wI73D4sBfEbLs4O3T8XIdHnASHtNWw4DAx19B488gCetLgKGVa3ZgRraGOYPVYJVnkkHP6fi3OuizcG99Gt/ZmLaa5HdGduU7arl/KxiVjIMZQuOIYrkaAEOE85JhuIRhREP21aP4Z+QqHsNZIT8zyKdSyyAleU7MUwjOHnwCbUHLepVcNqXzhuOcV1bxhr1hS6mnk+tpUDdZXJxNawHL0oxKxjK1QCFyAK0gRfGJD/88p61OnGJ25Awm0/sw2mtTl1yiMwYbkWeIk6qM6SDEzsJnq3KuMH0OIV3eROXKHgiEOTogq2isnIatBDQBDdvUaGA9nBabnoISr5FH0OHGFSr7jPLwYlFVW5AA3D450BatCsApQTefUebV5B3tJnmyIWQh29TuAKdxy3CenNvkNoW8Fm1tLyWZEfkHw1cvraSrqVCNIn1aTJXlP1OPayzG6nJ2765HqiC5qrJKhC1F5cseR8zCOWOyii/CxXwxnzSl59Qpq80QWAKxVC+gVoJJL5dTudPKpBrEYnLvciaBrtPl+gpSqH4QS7m/mA8OID7wYOyCo5FT0g5ZxeFgPSYta1nJAEkyOeuofwZ5IhD9jfOe/v7uO+aWkfs0MqMKB60i61uRsgV0Ro7WySo6HWtuQD5ZPRQEiOUwrO55WZdLc16Y7/SHif7MlBv9CqeM8yidsorTqW9ORLiE3soZtXrQQ0WOo/KRWIrVhi3M7nDujBN75USmwzlD04pZvDofciVtyFSNGatTFZ83gS6/JGcINCFp6sVHCNiIcRPg0FQwuA1ueZNllTitTVeCLTjDaQKw0m+DN7duJfCaPGZ/8oorpvi1yzy5Kqw1y7TOtRP28SQWHLNL/YqsA/0WDolnZrxFP07ySZupZNmJk0kdLHIevCFOqfTiBFMkb+0NzdhExWATrIuwS86YY7oKenrryqzTU4/Vg3+6HFRatsw5FXjkc4RHkGx0y5R+zolBVSoJj3gVlTo2EZAdW8Yly3Jiz+AKrMqTrZPvWHWtTppd5RAsl+cI5isRflNUa9mRauYMMmUIzRsEdkqZUjYkHI1WrlHTQBGtJfIGATe2Et6VOPZXNdoqkH8zefy43hh027VumydvMBl/sxrqekQjVZUJIIZfAhyqOQAkz1ivpAxSzqCsqBQ4P91e3cQST4tbmfwrbmQVp3oLQgqwdabgLhjxxhXP/2BkoGU0Ch6eHolk7KbOhxFvuhffggk4rEPSZHGR/wJZW8JR0V+FA+iZvP4ZaEm5hqVnqK6HPFPUnjlQuTZSV7mi3H70TIWefb72zAsfRM/UQjmS6/AG6uMAPq/5BMnFFfJpCmSNjgl//qtv3auDQLFAjsET2/CR/rV1fb2O2sXPdGK7OMdkGjYg3sU7xLqHxBSTM8b/121EXNcfDPanUgPB4EAqFo/HmuPxZpjOz7a2zuaFa3FDOr0B/xL4hbwDsr4nrtWKZ00fzIZ2tK2hj8RS6/gbKbEs6BBMNgSRzYxMDE5jq56ttOI8U/F8b3PAfq3Z6rXZArJOxUA8PRx0bP/8P+Bfr7X4TSaXx22PZ4opT96xvSi0Pw1e1H4Ir+WFZJxaw6nVIaeZc4bq1vIMdbE4dUFqtX5ZooT3j6g65VG7IxJyRoN2j8cSN7SruxK53paOsTxMp1utXo/Pbmtsc1nMjoQ1FC+2tLi92VwZr2kJa83kzGhrWVE7M7qh7vRzRN+CmG7TBQH2qXu+2tXaukayA+6Kv/WHtpErrr+eEnE2Azjuz43H5JZxVhWHHFikF3XuM4xJyCMxB1hxPIi+54+qu2QRJ84XarK32X/wGZXCb8gOBbsCMJNosToamxob0Rx6tG1aoexvC3b4BH2D8ekjZ9x5cKSx0cPZlZzdbmSN4kCqrER2PvKnZaej3UGr5bzMTIPe3+YLdQZcobDLFQ41wrS/w99YcP9r4HxZoN2LbopNLmdTk9PVJI57Hfl/JFbMCycI8+LWe966Fw7UJgZDYPUT3goi2ddeDhWC8EIQgkFoDnK5Zog0v9BMNzergimwpThbsxtwLgLW7STBDB/kSc5XEMZTvxsjbunUD8pSd/Dzse6wy2GwDbe2DtkMDtf6nMXrsdo8Xqs92mxzRJucMO3K+B0tOmXUnOrsTJmiKl2LI9P9istkanSZzc4v+WxWn9dm94o4H0c4f57gHFGc8XD348wJpVFp55QI3CQ5Fh1PmJVHC2qhHsSpWaUOY7wrEOzCFGgNhVyN4XAjHKriW8T/4xjlGPWCfMmR/0PhGzqaMkowHa5DQDUK558/wCooTqogmwlkFZ/M84zZd8NtR+Pfyd/CVybgVXyy/J0TQlvnorpO0pa5G99Po7bt5N6SxPe96H2BvgfdWy3V92Fyb4vi+3PQfYKUtydIe+g+QN47SHtb0H2cvHeS9f9N6L6F3LtaMOzpxduoX1IX16+fFjJs4Piu3SMXnySxUbdRPyPnTWvxTpewE7csMR6VvlzMEPPvXBisO1X67yeFMc4tvkO9SB1Ffer9+D6K2vwJdbGOBuc/MD3x+5+I52WrT+itYmZS5synZX8wVA3AEVPTTntadq0vWoL6cr2L722ow80EP7J3Trc/Mo/eJ8n7Xe34foaap9N0C7rfY8T3GxdvoUOMDt2zOXwfQPjcTfD5ogzf70D1c+R+dyfhFXS/kbS3NyzQO083wmvoXkPotZ/6A+2BNLr/GaH3B6h+2gwvovvP5PCcPY8yIb/pfeKYqPeJY4Lmfz6QicD+KO2Fx1DfXnJ/LdVGy+A36N63Ft9fSrUBT+49Q5hu5xF/s5o3qV7Km9RKtCJ8JG8SVuRNgv90iZMCvfZS+2gL0v80dSCF/28WH8Ivt+z/ZkmW7Wf6v1mSVXH//+v/ZbmaHAkQ6g6hz1Z4NMv3DcVibk887gGd8IqcHOBpbvaQh/fgoqVgsIQr8AeF/5flTzjzGf/yDfWvi9XHZNy7F210hD6Jxr0Pswx/gj60+LgYL+krm/RHpRCT4qT130sltmVp64cyy5mgPhaSf35lwvqqKEgK+B/R2xf30C/X7ytCxhrgf4QPPXwZH3oIixpU5vblZfDM/yZOUCVFUDv30nsWn0RlGijNiQYGEPXwchturRZuwt9bizc596KLpOUyHusP6bWLtzNOMtYbygvXWp+y0oetsNcKYSuYrUAL0SfX6Z/Wv6VnjuphQQ9RPTj0oNYju0HPKaXQ/lcpPCuFOzGajklpkxQel8KHcRwKFKVwN0Lbu1LmWilsxQVAgU8jx2fSLwtD2VJNmp+vpqKmWukzxKL8VYxFIWEnOBZlbVcsRp61CbEoJhfByU30wuIv6F9RJup35btYmczUJoEnJfCwBO6UwJwERiXwlgT+RwLflYBC4pA0Sxi5RKKQaKA4pYE+DfxaA1/UPKihr9XAYQ2YNSENjV7KTRpOaYKiSf8NHSR15+tu0DG8Dn6rg5M6+JbuBzr6Zh3oyirdUKcOtDqPjpbr9JQCijsVMK2AtAK8CrhfAXcqIKWAFxXwhAKuUsBWBcQVoFiKzxHQUhJOxxbOn00uoelQLWalGmCkJ2Kbrgat5OtiVm4XY1Z6omLISk8zvYBDVgodOGKlg8x//gRjXnycuVzHUhx/hPoaweGPGOniHuaqGu8l6/iTuepSXG9Rg8rczlyF6h3mL8D1UFv3MsrFJ8mzJ/iLxGc3MarFXzDXoWdP8RXSvoKKLzKq58n+Nt6tG6QWqOPU1dQnqTupBxA/ToQDQXZhnAuYuEBggT3+Ae748QW28EmuUFhgB+/kBgcX2OkHuOnpBdbp4JzOBTb5US6ZXGBLt3Kl0gK75d+5LVsW2IOXcwcPLuBN84VlUuqfvYjS7J/aZUeexcrTo70r7iVn27cNvt++smTFpq73LPdn2/eXX3ThhW+/WbfVCu/U37x8xj1j+v732eF+u69uw5bm6m/21u01v0/QAWN7761lO7313/94hj3qP55+Y/2u+k3i5de6HW3q/wDKYGr9eNqVkMFKw0AQhv9t04qIHhQEe9qDeGtMW3rqqebQS04p9CgGuqSBJVs2baE3H8GnEE+efASPPpR/krUS6cUsZL/Zmf+fYQBc4B0C9XePJ8cCZ3hz3MIJPh23cSPg2MOVeHDcwbmwjru4FK+sFN4po8dKVbLANV4ct9j3w3EbQ3w59nAneo476ImF4y5uxTNCGKyxh0WGFCtsIKkNMMCYNGPW8F1DMYp4QvikKV807/igKqpI8Vb02vG/ZCVCs97bLF1t5DAYjOXMmFQrGUWhL6day7hMFTJWhbI7taSg2XGOBDk94YTzJGdQ9kmxZU3CXohVutWJbWonjejHp/9XW/tO6qt07x91+51EHneoJpMH7aLaQsHtGKrKjfrcaYARU8oWmcnl0A+CEf4zZWO8b66qbSp42m1TV2wjVRQ9J8WOkzhle++9eB0n2SRbUzdbstma7bvesT22JxnPeMfjZLOUBdGrQEj8gWg/gOhViPIBiN5ER4IPvujwAXwi3nvjtbHESPeee95t58nPqID6/vkeh/E/H7ulQwUqUYVq+OBHDQKoRR3qEUQDGtGEZkzBVEzDdMzATMzCbMzBXMzDfCzAQizCYizBUizDcqzASqzCaqzBWqzDeoSwAWG0IIJWtKEdG9GBTnRhEzZjC7ZiG7ajGz3oRR/6MYAdGMRO7MJu7MEQ9mIY+7AfB3AQh4T+ERzBURzDcZzASZzCaZxBFGehsQIP4lpch1dwN37A9bgdt+AePIyHWImb8Q2uwV2sYjVuow834nV8Rz/uxSP4C3/ibzyAx/AO3sLjiCGOO5DAe9DxNt7FR3gfH+BD/IgkPsXH+ARPIIU/cCe+wGf4HGn8jF9xE0ZhYAwZmLBwH2ycQxYOcsjDxTgm8BPO4wImcRmuwOV4EffjIq7EVbgav+A3vIQv8SSewlf4Fl+zhgHW4mk8g+fxAt7As3gOb+IGPIpX8RpeZh3rcSuDbMDvbGQTmzmFUzmN0zmDMzmLszmHczmP87mAC7mIi7mES7mMy7mCK7mKq7mGa7mO6xniBobZwghb2cZ2bmQHO9nFTdzMLdzKbdzObvawl33s5wB3cJA7uYu7uYdD3Mth7uN+HuBBHuJhjvAIj/IYj/MET/IUT/MMozxLjTHGmaDOJFNM0+Aox2gyQ4s2s/68ZYTDPeEC9nvYGylgawHbC9glMRIORwp4ifd62NFWNZB3bL/mOPZEPhtQmLAnLJWOtLRXDY8MDVUNJWzXNxgy7ZTtHwzl8lndqXZCmun6dHXoS3lgemArqExGY8KS1cKiMeXTyhvKjyo/prypvCuq08IMYaPCxoSZlfLcEVOERZMicitdgW7UVTds7e1ruqA7diihW3bGsDTXdhptSy/j7kRZvtlNO3pZRVPSzjvlB8Z4+Yyccb5sRk4f162yE91Ipd2yIZZRLqRBKbXyGd2RNCh1lphUWWSNnsYib1AK/0OlvlKvVFfq9bSVuKes1Kx0FalfqXKTPilHgNThJms8AW7SrzZLlCtFXu4SeW+JCLzpokCNdZOBuJ3JaPJ1BHN6xojbpm1JFhCvxrATssWrUIFMusn6UqWbDAppMd3JGSk1P5fV4kpIXLfknrp43nF0Kz4pdyVs09SUPPmOZTbn6o5pWCkpdVIp9GfNfE5OEj+DCuoyedM1sqY3wRg3Erq6yLm8ZoqgNuXompgiW009Jzvq5YhL7UHxuo24Zlq2lFMrrlVQVpvT466h7uA9znBnIOVo47q4byygxfOuigq5SAF7Aq5hJlSmrtAVimvZYLFTsWK3ZIW6iMoUu1Vm0LZTpvev/BeWnuwcAAAAAAEAAgAHAAr//wAPeNpjYGRgYOABYhMgZmJgY2BkeADEDxkeAXmPgZCR4QnDbyD7D6MdAyOjPaM9kP2NQYRBB6jDhsGLIYIhjaGEoYlhAsM8hmUM6xi2MexjOMZwjuEawz2GZwzvgPpZgPqc4TTIDi6ICFM9TXjoNhJH50PpIihdCqUjobQL0BZGhhfAsGAAAPKGIUgAAAB42sVYW0ycRRT+zl5/FliW7XahK12WFWvFSpE2pjEN1kpJ2VIgCLUhhkih3NxuG7o21hjS8GBMY3w0aowPpumjDz4YTUwffDDqgw8+iDWxsUZbL6j1Xi8tfjP/D/x7I9y2ZpM585+Z+c4358ycmVkIAB9elhhcrW0dvYgMnZ5MYufo5NHH0ZkcTKcwBhf7YG4OBoXAASc1Hnj5vZoWH+ShB3tjiBVoV1qBGyVDg8k0dg2njh9Dy8jk4BBak+OjgziSTD1xDGPJ40NJpFidRPqE0jyVVuUZjRfSZYBluYXtttBLaL8UZdT7dZ8NuqzUJXRZoUvRZRDVaMb92ItTmMIzeB4v4FWcx+t4ExfwHj7CJ7iEK/gRf+CmeMQvYdpRI2dNBPHp7yrpl1nHlNPlPOtyuaZcs+5+9zueqCft+dAb8g54X/F+ZpQZLcawcdY4Z1wwMYy3LPmxJa+bsqTBkmOWfMOUPsOSE5b81JSlPZac//7X5FYWt2SDJZstOa2jJ+VmFKXCZcqA32wPRC25m54F/RtChJqY1m7Uvtuuy9NW3YH9qKOnQ2wNo4o+3cQRt6GGfq/AZkTJy4lhjDBCF3EUo4zN53gJbxOzDrU4iRQjN04ch1RKhKY3yw7G0clIbmV8dqMN3egnQgpPYhrP0WrciqaKoUPHuUZzLVbNtOTUtXhBXv8HIx+2oIlruBWdOIwjSHItn9HxuhUesvslVoDLrWNRgno0Yhf3cwcO4TFMIM2WaBE9YZ9/NK/9Yls2uB634T7sQQK9GGA+F92+vnbt86zJY7M41rxcUw3YiRZmmB48Sm1knWZmn08kx856WvBwXSxmC2F2XMsM7Lyrs7DXjurm1/wOFubylTO18wtn4K0WycX4mLvKPPeXh2PnEbJhrGy0kz5WK119LW3Zbi+4MG45Ixz0U8y6zeT2t+MGrL6Fe6m5ir75zOvs4/0LNyd7i+jTXY2r1yd8eAnO8/NTOcDsm8lhZsHjDr0ys/uwJl4JZPUOU5r7r3D//COrGdn5TLScsflRIlyni3l7ZTj5EWu4M+0n4Wox86NHma8y7x9rx89vKcZMb8+LIzixrrbyW43zHM08XSbxdJHs5mdQz5tM9jk+hWeLziGXjbnTgtb7pSrDtoM9Zli7IR5qc3dylUZxFth/HvyWsXs9+C6jZ3Hu9BpX4lInd0iz3CVR6islKBskJBslLFVSLZskIrUSk+1yjzTK7XKn1MtW2SH3SpPcLdtki6gXTZ0+W9Wbz09GlXm5Kp61mtEwOY6Q5Th5ndQ8L5KvyDWOD/P2/iLtTctr8q5c0neqRiTkAfq9h78Eusi6S9d6KDsoW/EI93Uf9Zf51izQRoRSG8LehX7CvPVV4XGcT4w7vIkrcA+/uqkd4AwmuPtOcSdM4xo5trP3T1p28X2qZCd+0PIgX6dKduB7LQ8wskruw+/0f5eOeyd+ZXkQv7DswM8sD/CN6yDmtyzb8Q3LfSv0xNer9MSVJTyh2q8u0a4YBhjB63qG7fhLz+FPPQcH10cZ/tGav7VGdD7bz1pCI/axRUT1CzLHdeMc3/3v63HRgowvszU7knaNi6s8zpzZtgSCkaFvyNEk6EtPjpeyNVczNIp1DF9yxofxMFH6NPJie2ZLIgPLo71i+uSQdcIb2sYXxF1859dwRjPMIIaUiE9KpUzKxS8VEtCZI2hlDtXrA9zATcxxIP0rTnGJm1nKof+tUTlWZRn5D/8+UWEAAHjazVp5jCRVGf+quqqP6mump6en59pjFnaXhV0u5Vx31w0iKIoHKqIQ5ZIIAiEYQ5TVJSauJGJc+cPgRNGYDYjAiJKQkbConWiitMgiaTFrtEJEsVEGsVH7j/L3fq+quvqcnhlCqF+qu45X7/i+733Xe2KIiCMXyZVinXPuBRfJ1BW33HSdbP7ETVddK6dc9/Gbr5ddYqGMeJ6ossNcG9deddP1ksSVqe7wG5cCfpMSk81G0byE10780fhfSnvnnjz+iydcs/2k7Z/cfuf2GkpXWVdONstJaHuXnCNXy+fkLvmePCA/xvmY/BLfFz1XSl4DNY6j/2Wck2Lj6yKeJfn7Ba9hJLy6kcGZxZnDfR7/I14dJYv4nfGek30o+XldWhKsdbf3rHrqf9vAtw1800CbE3g7ie9Mfj2OZwa/UPdVfIc3huHVjBieGfgOvxhHToroY0km0MtJmZGNskl2y1HDMnIov4GjvUP+hNZToGBdug7PRUvtT2od94v8rbeeB1foQ/CkErxBuXpXjVVyKwvK2OiRA1iSB0wZAQwZBUxwsYD3NwCG7Afi8iv5Na6fAGLyJBCTpwFT/gjY+Hf4TVzGANAXMEGLEspNAAZoUga/Jsk9VYvFWix+H2e7NupIoycjuC5AHi5D6/vZ7hMo+TTKmdbFiormI+bLKDtHSgSoySoPUiS4nvcWvAZQAxreQXBkEf91xRlcVQPa9qilEVC6F2d7le7kjH7e/65fTbKGI+xzo11SOvoxzIjqUSooaQzrrnZSe5j6erZRW80I9ciC+TGYXn7vh5SnoWlvYsareaFnRIozwuaMsDgjkjIFGDINxKA5ZiRu5KA1EvjibLxNyiznaI6zM8eZNsIaRznTpqB3xvGtqnec9RZZ7wTrnWS9BTkGMKBtN+P9NqAs24GknAKU5U1AWU4HTDkD2ChnAjE5C7DQi7PR451AHHr6HIzhXDlPMvIOIC3vAzLyfiALC3MRrj8I5OVmYIN8GlgvnwGy8llgRm6TL6EnB4CEfBkoy53yDfzeBZTlm/IttP5tIC7flXvQ1r1yP+p8CBiDZXgE14tARn4OlKUCZKhT1lGnrKNmykkNcOQoUKKWGTGSRlJmjJSRkg2GYziy3kgbaZQxyJ9Ac0+BWjOgvgENY5F7SrMb8hBkNwbtX5O93oLshxQri7df7hYzv0eVzNyYvQA17KUEHfY1xn3QKEdxPe8tQXvb0CsVPHXx7Hn817wjeFf1Dvnaui6v4UG5V5rmD+3aJmhFv+fpaLvhNcM5s4SzueYevNRh35Z06xFt6bKluvf73tpGz992rLgXLjnS0DqAI16K1sazGY7eDbWZS664ndow/HZofnWMSWukeofO0SOt96XDUqetaf2vRNe36CpOa6whrdv78Lz2KGgFK74/YftypcseUjqddAJ9+9vHaI3awoYjbwa1BaNucTlSquHb+QgdWlYnoGlvL6qnjl/qrKHTOkclrcuLWlr7zHxd+rBueHmIaoSgBX9+NLttau8aorIzjOfQ8lr5reKcE0pCI/Rij6iZGPgPnXX26kW3x9DtCUdG+TCluwYtvEi/b9F7hdqwAt2t/rWO9vvgzbM2t7+HMEj+elNE6yZ6mbX2Wd6lozrnBTwV2JKafo+yzRa//HlRb48Llu81uWJzph7tP7KWlwR6HcT1ocjo7EBCvX04F0hXaAdFu+E1ZosCnbpT2Sv/ztUlIyVe7ScPQ2vrgO5uoAE7dRhkZqlT1v1v6mvzyLvnBeWignmxoCjZkmxQ8zDoWvF5UPOt22Hy4SDuH/ZeVP4G5VhJcs076Ft5pa8XdV1ajhnxtEnfyi3K8G8j+r2+IjrU4YEVOQI3UtdRn19uQAfec3yY0XWtMXiqd08pX0xTknSphnRwI3IXiZ079IvLPvyirQ+UQu0XBPf8P8K+LnKORvugatcWteLfV9v0qtvlpR1t6wHntG9Jg7Zc9gK907XoFgfIdz3SQjSfUO/Hu3bZUD4rZHI+yEn4tH8Yz6vheGq+bN7HcvO4v4+RdZVx9SLuqt4BnxcLpEaFfaswSlwKZbrR2eNOm9XhndUDbq5k1g8fzwUapys7s6w0K1nsPcc0z3pFzD3jyWPkWEBHc6ZsAWKyFbDkOMBmfBeX4+UERFgqykvJDsCRE4G0nCQn47mK+zJyKpBl9JeRNwM5OQ3IMxIcYSQ4ykiwwEhwjJFgkZHguLwFKDGOsxjHmXK7fAXXdwAJ+ap8DdHlQSAmXwcSjPIyjPIyjPJGGeWNI4K6G7GXiuYsjMmWV/HmdIzzDDwd5YjLOHeg/R2IDHciGhbZg1EI2hfZjYjyrYA+VP/XMRupD/1/Qkg7wz/PRG9jaM9GhBrH6AWRnzpOxbkJ9EwTSVBuC6i9nTRWFE6DWmnQeBsoMsaM3xxocPwAbiUw2pPxfxauokcW5y5eZUBTfZyIvrewPhyFgDNC/ugxBFDXMR9x3G1B36NIhzgWkqJkZppjCCA4x3yU8HUJbw0+bx2K7yord4r/OwUunBz22LfE4Ev3kRyIrUSBGWMLNFa8vA0SMgX5uBstKHk4Q8zM1Sq2Tu1xfgA+bwu8HEJ7yE2VHV59/q9NlzR9y75EPVLx2wnwqG/hm0NlxOiJRf2x6Nz2Y83I71C9bMKiN3Wt4ZFfo7Oh4jmVDbYjUXFzWR20jIYEnvf+HPWGfE+s2B67Uts3aKOLeLcYWLf+9GwbvRPqeae79DDaPZIB7fI1+3vvg/jfm+9rlM7+dW5dQ52DZKm4Gvvo03Cp02ca3uZ2z+MW33VU0YvbKx97iMZrx6Mg+oLk1zmHXu625YG/1tdDcLX32R7ld+mlYJZqXVjTXt9y8hZKb1BnPcxjRXUdNSrnYbNb1/XufUSW7B6ytGl1OoSRlorvHHgBaqWq1MYtu31dTHmVvD5E77HWU15tnnaHTq609EowH1agk1XOoum9oH5Rs8rT29RLdqQ9e6DMN4ajZx/PsTF0P0VLET2FZdfEgkyL8uj78r1bZ2YGrd4Eubmof963n0ur1iFuz6xjazU016nF2/IHi5QI189sKI+9MuTYddsO+e1QR61aT608h9Q3VtgpbwMMORcw5e1ATM4DLDkfsLmGE5d3Ajm5AEjKuwBH3g2k5UIgI++R9+KtWufJc51nhOs8o/IBoMDVnjH5EFCUi4Fx+TBQkkuACfkIUJaPApNyKTDFtaBx+Q6QkHsAS+4FTPm+3I/rB4CkPCg/hO+t1nym5UdAjis/ea785OUn8hhqOAxMyuOAIT8FJuVnQJYrQpb8FTDkb4AtLwCG/B3ISR1IyouAI/8A0vJPICMvAUVZAnLyMpCUfwGOvAKk5d9ARhpAEfHJf1Dnf4Gi/A+wpQmoFe/z0ecU/PYMME1dMMs1u1n6uRNcm9vIVbnjEDfM4RsVZ21ihHUMPe1jGVttRlSzG3XsAaZlLzDJdTeDvBzl6pvmn0n+xci/UfIvS/6NgHsX4oniXIGcs8i5MXLOIudK5JxNzsXJuTI5lyDnkuRcipxzyLm0fAyYlk8Bc+TimNwKbOUegQ2M5jaTr6NcuTO4cqc5mgNHHwQ9FsDXHPk6Rb4WyFeLfLXI1zL56pCvo+SrQ74WfL6qlb5xqQJb5DeAXvUbl98CW+QpQK8AzsrvgDl5BtgqzwIzXAecgFyoXR6vgn8FcK+JsZtc17wU80WNagojeATjXESrp7LVnfimiQjFTF6uopF4Mf4cqLdJe7TyBjq6s5Kr9N9rgzJIr+N46u3WYrD/NIAqLnPQlUh+zV1ZTczacUWglYUN7Zr2oKrD1hhd/3stcsWRKKu6wi9rXN2rdVr/IH9H37LeyvEtU2NF51X9uwPd1rFv/sttq6Ua9ALlD/jrtzrT7/r9qtJX1li2xmiWcmXZd7W2wexklX0/EK4Mu+F7l1nchs52qj1C3TzAu30Rb2N+cF+7vTGdwe/hTdXbo4Uh5rTO97tvBE01OMO8nKTR0z+Ic96XikqQcWYGutLOBz6r+e9rkXXvK0ndhXbq+lJYZzbbXcYLM7lPxGIu0Yb1jXMXnPL/svQDDPxn6QvkYVnVLrsYfYIEfYIc7NQ61jEHW6us/gitvkGrP06La8gVQIF2V+/Ki8ktQJLWN07rW+ROuRitY5rWMUPr6NA6pmkdM7SOjhwBRmkjE7SRNm1knNYxh77s5q6iEncMJZhjzjOjnI/sGMozZ6zzxDbzxCP0YuL0YmLME6foy1jME8/Rf9lAz8Wh52LQc5mgzzJFn8WktzJLb8Wht1Kmt+LQW1lHb2WS3soovZX19FYK9FbG6K1k6K1k6a1spC0vc7dRglnqHLPUeeah88xD55mHHqHnYtFn2UCfxaHPMk2fZYY+yzR9ljR9lln6LA59Foc+y3r6LFl6K1l6K7PMX+bpPTjkxzj5USQnxsmJIj0Rg57ILD2RUdxtoSTFuRsyQ8nROyKVnMzJLnBnDyTjMsjFFZCHGyAHt4b7JKto4UnU/xQ4/DQ4+4zaNYlftY/pGtmH/zQ1wcIAXaNXaiN7S3wt2wg0cp9IROXTk9z7q3xgg/lnk7un9M4zJTsm5cWipNiUlDglxaGkJMjPJHmYiuwSi5E/CdI4RRqnuE6gsvOb5Fq5EfU+zjFug2Sq+ab37lT0On3gzVBTBvl/E5LX2hFnUb4t9jFG+bYo3xZXQ2z2Ok4pT7DvSfY9Fel7mjKdifTapLRZlDaL0mZR2hIcTdpf71ASkOFOsphcjt8dHEcJfYqF2X+TOwhbNDXCdQwrQgG9W63AnYRGZKWjdQZtnMaSZbZltPFPtWKylRg95mhNdtjWs8O39n+9JfMNAAAAAAABAAAAANWkJwgAAAAA1YO2WAAAAADY2izo') format('woff');font-weight:normal;font-style:normal}@font-face{font-family:'TypoGraphica';src:url('../fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'),url('../fonts/TypoGraphica.woff') format('woff'),url('../fonts/TypoGraphica.ttf') format('truetype'),url('../fonts/TypoGraphica.svg#TypoGraphica') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'argon';src:url('../fonts/argon.eot?u6kthm');src:url('../fonts/argon.eot?u6kthm#iefix') format('embedded-opentype'),url('../fonts/argon.ttf?u6kthm') format('truetype'),url('../fonts/argon.woff?u6kthm') format('woff'),url('../fonts/argon.svg?u6kthm#argon') format('svg');font-weight:normal;font-style:normal;font-display:block}[class^="icon-"],[class*=" icon-"]{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-expand_more:before{content:"\e20b"}.icon-menu:before{content:"\e20e"}.icon-favorite:before{content:"\e291"}.icon-spinner:before{content:"\e603"}.icon-delete:before{content:"\e900"}.icon-edit:before{content:"\e901"}.icon-use:before{content:"\e902"}.icon-loading:before{content:"\e903"}.icon-switch:before{content:"\e904"}.icon-error:before{content:"\e905"}.icon-dashboard:before{content:"\e906"}.icon-logout:before{content:"\e907"}.icon-Network:before{content:"\e908"}.icon-services:before{content:"\e909"}.icon-system:before{content:"\e90a"}.icon-vpn:before{content:"\e90b"}.icon-storage:before{content:"\e90c"}.icon-statistics:before{content:"\e90d"}.icon-hello-world:before{content:"\e90e"}.icon-angle-right:before{content:"\e90f"}.icon-password:before{content:"\e910"}.icon-user:before{content:"\e971"}.icon-question:before{content:"\f059"}.icon-docker:before{content:"\e911"}.icon-control:before{content:"\e912"}.icon-statistics1:before{content:"\e913"}.icon-asterisk:before{content:"\e914"}.icon-app:before{content:"\e915"}:root{--primary:#5e72e4;--dark-primary:#483d8b;--main-color:#09c;--header-bg:#09c;--header-color:#fff;--bar-bg:#5e72e4;--menu-bg-color:#fff;--menu-color:#5f6368;--menu-color-hover:#202124;--main-menu-color:#202124;--submenu-bg-hover:#d4d4d4;--submenu-bg-hover-active:#09c;--blue:#5e72e4;--indigo:#5603ad;--purple:#8965e0;--pink:#f3a4b5;--red:#f5365c;--orange:#fb6340;--yellow:#ffd600;--green:#2dce89;--teal:#11cdef;--cyan:#2bffc6;--gray:#8898aa;--gray-dark:#32325d;--light:#ced4da;--lighter:#e9ecef;--secondary:#f7fafc;--success:#2dce89;--info:#11cdef;--warning:#fb6340;--danger:#f5365c;--light:#adb5bd;--dark:#212529;--default:#172b4d;--white:#fff;--neutral:#fff;--darker:black;--background-color:#f4f5f7;--login-form-bg-color:rgba(244,245,247,0.8);--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--blur-radius:10px;--blur-opacity:.5;--blur-radius-dark:10px;--blur-opacity-dark:.5;--font-family-sans-serif:"Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;--font-family-normal:Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif}*{margin:0px;padding:0px;box-sizing:border-box}html,body{margin:0px;padding:0px;height:100%;font-size:16px;font-family:"Google Sans","Microsoft Yahei","WenQuanYi Micro Hei","sans-serif","Helvetica Neue","Helvetica","Hiragino Sans GB";font-family:var(--font-family-sans-serif)}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:.875rem;background-color:#f4f5f7;background-color:var(--background-color);color:#32325d;color:var(--gray-dark);-webkit-tap-highlight-color:transparent}textarea{padding:.2rem}textarea:focus-visible{outline:none;border:1px solid var(--primary)}::selection{background-color:#5e72e4;background-color:var(--primary);color:#ffffff;color:var(--white)}::placeholder{color:var(--lighter)}a:link,a:visited,a:active{color:#5e72e4;color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}li{list-style-type:none}.table{position:relative;display:table}.tr{display:table-row}.thead{display:table-header-group}.tbody{display:table-row-group}.tfoot{display:table-footer-group}.td,.th{line-height:normal;display:table-cell;padding:.5em;text-align:center;vertical-align:middle}.th{font-weight:bold;white-space:nowrap}.tr.placeholder{height:4em}.tr.placeholder>.td{line-height:3;position:absolute;right:0;bottom:0;left:0;padding:.4rem 0 !important;text-align:center !important;background:inherit}.td[width="33%"]{padding:1.1em 1.5rem}.table[width="33%"],.th[width="33%"],.td[width="33%"]{width:33%}.table[width="100%"],.th[width="100%"],.td[width="100%"]{width:100%}.col-1{flex:1 1 30px !important}.col-2{flex:2 2 60px !important}.col-3{flex:3 3 90px !important}.col-4{flex:4 4 120px !important}.col-5{flex:5 5 150px !important}.col-6{flex:6 6 180px !important}.col-7{flex:7 7 210px !important}.col-8{flex:8 8 240px !important}.col-9{flex:9 9 270px !important}.col-10{flex:10 10 300px !important}*{box-sizing:border-box;margin:0;padding:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:normal;line-height:1.1 !important;color:inherit}select{padding:.36rem .8rem;color:#555;border:thin solid #ccc;background-color:#fff;background-image:none}.btn,button,select,input,.cbi-dropdown{line-height:1.5em;padding:.5rem .75rem;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem;outline:0;background-image:none;box-shadow:none;transition:box-shadow .15s ease}select,.cbi-dropdown{width:inherit;cursor:default}select:not([multiple="multiple"]):focus,input:not(.cbi-button):focus,.cbi-dropdown:focus{border-color:#5e72e4;border-color:var(--primary);box-shadow:0 3px 9px rgba(50,50,9,0),3px 4px 8px rgba(94,114,228,0.1)}.cbi-dropdown,select[multiple="multiple"]{height:auto}pre{overflow:auto}code{padding:1px 3px;color:#101010;border-radius:2px;background:#ddd;font-family:inherit;font-size:inherit}abbr{cursor:help;text-decoration:underline;color:#5e72e4;color:var(--primary)}hr{margin:1rem 0;opacity:.1;border-color:#eee}ul{line-height:normal}li{list-style-type:none}h1{font-size:2rem;padding-bottom:10px;border-bottom:thin solid #eee}h2{margin:0 0 1rem 0;font-size:1.25rem;letter-spacing:.1rem;padding:1rem 1.25rem;color:#32325d;border-radius:.25rem;background:#fff;box-shadow:0 4px 8px rgba(0,0,0,0.03);font-weight:bold}h3{font-size:1.1rem;line-height:1;display:block;width:100%;margin:0;margin-bottom:0;padding:.8755rem 1.25rem;color:#32325d;color:var(--gray-dark);border-radius:.25rem;background:#fff;font-weight:bold}h4{margin:0;padding:.75rem 1.25rem;font-size:.875rem;font-weight:600;color:#525f7f;font-weight:bold}h4 em{padding:0 .5rem}h5{font-size:1rem;margin:2rem 0 0 0;padding-bottom:10px}.pull-right{float:right}.pull-left{float:left}.nowrap:not(.td){white-space:nowrap}[disabled="disabled"]{pointer-events:none}.login-page{height:100%}.login-page .video{position:absolute;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#000;background-color:var(--darker);overflow:hidden}.login-page .video video{width:100%;height:auto}.login-page .volume-control{position:fixed;right:1rem;top:1rem;width:1.5rem;height:1.5rem;z-index:5000;cursor:pointer;background-size:contain;background-image:url(../img/volume_high.svg)}.login-page .volume-control.mute{background-image:url(../img/volume_off.svg)}.login-page .main-bg{position:absolute;width:100%;height:100%;left:0;top:0;background-image:url(../img/blank.png);background-repeat:no-repeat;background-position:center;background-size:cover;transition:all .5s}.login-page .login-container{height:100%;margin-left:4.5rem;position:absolute;top:0px;display:flex;flex-direction:column;-webkit-box-pack:center;justify-content:center;align-items:flex-start;min-height:100%;z-index:2;width:420px;box-shadow:rgba(0,0,0,0.75) 0 0 35px -5px;margin-left:5%;background:transparent}.login-page .login-container .login-form{display:flex;flex-direction:column;-webkit-box-align:center;align-items:center;position:absolute;top:0px;width:100%;min-height:100%;max-width:420px;background-color:#fff;background-color:var(--white);-webkit-backdrop-filter:blur(var(--blur-radius));backdrop-filter:blur(var(--blur-radius));background-color:rgba(244, 245, 247, var(--blur-opacity))}.login-page .login-container .login-form .brand{display:flex;-webkit-box-align:center;align-items:center;margin:50px auto 100px 50px;color:#525461;color:var(--default);justify-content:center}.login-page .login-container .login-form .brand .icon{width:50px;height:auto;margin-right:25px}.login-page .login-container .login-form .brand .brand-text{font-size:1.25rem;font-weight:700;font-family:"TypoGraphica"}.login-page .login-container .login-form .brand:hover{text-decoration:none}.login-page .login-container .login-form .form-login{width:100%;padding:20px 50px;box-sizing:border-box}.login-page .login-container .login-form .form-login .errorbox{text-align:center;color:#fb6340;color:var(--warning);padding-bottom:2rem}.login-page .login-container .login-form .form-login .input-group{margin-bottom:1.25rem;position:relative}.login-page .login-container .login-form .form-login .input-group::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#525461;color:var(--default);font-size:1.5rem;position:absolute;z-index:100;left:10px;top:10px}.login-page .login-container .login-form .form-login .input-group .border{position:absolute;width:100%;height:1px;bottom:0;border-bottom:1px #5e72e4 solid;border-bottom:1px var(--primary) solid;transform:scaleX(0);transition:transform .3s}.login-page .login-container .login-form .form-login .input-group input{font-size:1rem;line-height:1.5em;display:block;width:100%;padding:.5rem .75rem .5rem 3rem;margin:.825rem 0;box-sizing:border-box;transition:all .3s cubic-bezier(.68, -0.55, .265, 1.55);color:#525461;color:var(--default);border:0;border-radius:0;border-bottom:1px solid #fff;border-bottom:1px solid var(--white);background-color:transparent;background-clip:padding-box;box-shadow:0 3px 2px rgba(233,236,239,0.05);outline:none}.login-page .login-container .login-form .form-login .input-group input:focus+.border{transform:scaleX(1)}.login-page .login-container .login-form .form-login .input-group .cbi-input-password{margin-bottom:2rem;position:relative}.login-page .login-container .login-form .form-login .user-icon::before{content:"\e971"}.login-page .login-container .login-form .form-login .pass-icon::before{content:"\e910"}.login-page .login-container .login-form .cbi-button-apply{width:100% !important;box-shadow:rgba(0,0,0,0.1) 0 0 50px 0;font-weight:600;font-size:15px;color:#fff;color:var(--white);text-align:center;width:100%;cursor:pointer;min-height:50px;background-color:#5e72e4 !important;background-color:var(--primary) !important;border-radius:6px;outline:none;border-width:initial;border-style:none;border-color:initial;border-image:initial;padding:10px 0px;margin:30px 0px 100px;transition:all .3s !important;letter-spacing:.8rem}.login-page .login-container .login-form .cbi-button-apply:hover,.login-page .login-container .login-form .cbi-button-apply :focus{opacity:.9}.login-page .login-container footer{box-sizing:border-box;width:100%;text-align:center;line-height:1.6rem;display:flex;justify-content:space-evenly;margin-top:auto;padding:0px 0px 30px;z-index:10;color:#525461;color:var(--default);position:absolute;bottom:0}.login-page .login-container footer .ftc{position:absolute;bottom:30px;width:100%}.login-page .login-container footer .luci-link{display:block}header,.main{width:100%}footer{font-size:.875rem;overflow:hidden;padding:1rem;text-align:right;white-space:nowrap;color:#aaa}footer>a{text-decoration:none;color:#aaa}small{font-size:90%;line-height:1.42857143;white-space:normal}.main{position:relative;top:0;bottom:0;overflow-y:auto;height:100%;display:flex;flex-direction:row}.main-left{flex-shrink:0;width:15rem;height:100%;background-color:var(--menu-bg-color);box-shadow:rgba(0,0,0,0.75) 0 0 15px -5px;overflow-x:auto;z-index:100}.main-left .sidenav-header{padding:1.5rem .5rem;text-align:center}.main-left .sidenav-header .brand{display:block;font-size:1.8rem;color:#5e72e4;color:var(--primary);font-family:"TypoGraphica";text-decoration:none;text-align:center;cursor:default;margin:0 2rem}.main-left .sidenav-header .brand .logo{max-width:100%;height:auto}.main-left::-webkit-scrollbar{width:5px;height:1px}.main-left::-webkit-scrollbar-thumb{background-color:#f6f9fc}.main-left::-webkit-scrollbar-track{background-color:#fff}.main-right{flex-grow:1;height:100%;transition:all .2s;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column}.main-right>#maincontent{position:relative;z-index:50;flex:1;display:flex;flex-direction:column}.main-right>#maincontent>.container{margin:0 1.25rem 1rem 1.25rem;flex-grow:1}.main-right>#maincontent .Dashboard{color:var(--gray-dark) !important}.main-right>#maincontent .Dashboard h3{color:var(--gray-dark)}.main-right>#maincontent .Dashboard p{margin-bottom:3px;margin-top:3px}.main-right>#maincontent .Dashboard hr{border-top:1px solid #000}.main-right>#maincontent .Dashboard .dashboard-bg{background-color:#fff}.main-right>#maincontent .Dashboard .settings-info{padding-top:1em;padding-bottom:1em}.main-right>#maincontent .Dashboard .settings-info p span:nth-child(2){max-height:18.5px;top:4px}.main-right>#maincontent .Dashboard .settings-info .label{font-size:.7rem;padding:.2rem .6rem}header{color:#fff;color:var(--header-color);padding:0;position:relative}header.bg-primary{background-color:#5e72e4 !important;background-color:var(--primary) !important}header::after{content:"";position:absolute;height:2rem;width:100%;background-color:#5e72e4 !important;background-color:var(--primary) !important}header .fill{padding:.8rem 0;border-bottom:0 solid rgba(255,255,255,0.08) !important;display:flex}header .fill .container{height:2rem;padding:0 1.25rem;display:flex;align-items:center;width:100%}header .fill .container .flex1{flex:1}header .fill .container .flex1 .showSide{display:none;color:#fff;font-size:1.4rem}header .fill .container .flex1 .showSide:hover{text-decoration:none}header .fill .container .flex1 .brand{font-size:1.5rem;color:#fff;font-family:"TypoGraphica";text-decoration:none;padding-left:1rem;cursor:default;vertical-align:text-bottom;display:none}header .fill .container .pull-right{float:right;margin-top:0rem;display:flex}header .fill .status span{display:inline-block;font-size:.875rem;font-weight:bold;padding:.3rem .8rem;white-space:nowrap;text-decoration:none;text-transform:uppercase;text-shadow:none;border-radius:4px;cursor:pointer;transition:all .3s;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12);margin:0 .25rem}header .fill .status span:last-child{margin-right:0}header .fill .status span[data-indicator="poll-status"]{color:#fff}header .fill .status span[data-style="active"]{background-color:var(--green)}header .fill .status span[data-style="inactive"]{color:#ffffff !important;background-color:#32325d}#xhr_poll_status{display:flex;margin-left:.5rem}#xhr_poll_status *{color:#fff}div[style="width:100%;height:300px;border:1px solid #000;background:#fff"]{border:0 !important}.danger{background-color:#ff7d60 !important}.warning{background-color:#f0e68c !important}.success{background-color:#5cb85c !important}.notice{background-color:#11cdef !important;color:#fff}.error{color:#f00}.alert,.alert-message{font-weight:bold;margin-bottom:1.25rem;margin-left:1.25rem;margin-right:1.25rem;padding:1rem 1.25rem;border:0;border-radius:.25rem !important;background-color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12);text-shadow:none}.alert.error,.alert-message.error{background-color:#ffd600}.alert h4,.alert-message h4{padding:.25rem 0;border-radius:4px;background-color:#ffd600}.alert .btn,.alert-message .btn{height:auto}.alert-message>h4{font-size:110%;font-weight:bold}.alert-message>*{margin:.5rem 0}.alert-message .btn{padding:.3rem .6rem}.container .alert,.container .alert-message{margin-left:0;margin-right:0;margin-top:0rem}.main .main-left{transition:all .2s}.main .main-left .nav{margin-top:.5rem}.main .main-left .nav>li>a:first-child{display:block;margin:.1rem .5rem .1rem .5rem;padding:.675rem 0 .675rem 2.5rem;border-radius:.25rem;text-decoration:none;cursor:default;font-size:1rem;transition:all .2s;position:relative}.main .main-left .nav>li>a:first-child.active{color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav>li>a:first-child.active::before{color:#fff !important}.main .main-left .nav>li>a:first-child.active::after{transform:rotate(90deg);color:#fff !important}.main .main-left .nav>li>a:first-child:hover{cursor:pointer;color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav>li>a:first-child:hover::before{color:#fff !important}.main .main-left .nav>li>a:first-child::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.8rem;padding-top:3px;transition:all .3s;content:"\e915";color:#5e72e4;color:var(--primary)}.main .main-left .nav li{padding:.5rem 1rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0}.main .main-left .nav li a{display:block;color:#5f6368;color:var(--menu-color)}.main .main-left .nav li.slide{padding:0}.main .main-left .nav li.slide ul{display:none;overflow:hidden}.main .main-left .nav li.slide:hover{background:none}.main .main-left .nav li.slide .slide-menu{margin:0 .5rem 0 2.5rem;padding:0 .5rem}.main .main-left .nav li.slide .slide-menu.active{display:block}.main .main-left .nav li.slide .slide-menu li{position:relative;border-radius:.25rem;margin:0;background:none;list-style:none}.main .main-left .nav li.slide .slide-menu li a{text-decoration:none;padding:.5rem 0}.main .main-left .nav li.slide .slide-menu li::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background-color:#5e72e4;background-color:var(--primary);transition:all .2s}.main .main-left .nav li.slide .slide-menu li:hover{background:none}.main .main-left .nav li.slide .slide-menu li:hover::after{width:100%}.main .main-left .nav li.slide .slide-menu .active{background:none;color:var(--menu-color)}.main .main-left .nav li.slide .slide-menu .active a{color:var(--menu-color)}.main .main-left .nav li.slide .slide-menu .active::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#5e72e4;background-color:var(--primary);transition:all .2s}.main .main-left .nav li.slide .slide-menu .active:hover{background:none}.main .main-left .nav li.slide .slide-menu .active:hover::after{width:100%}.main .main-left .nav li .menu{display:block;margin:.1rem .5rem .1rem .5rem;padding:.675rem 0 .675rem 2.5rem;border-radius:.25rem;text-decoration:none;cursor:default;font-size:1rem;transition:all .2s;position:relative}.main .main-left .nav li .menu.active{color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav li .menu.active::before{color:#fff !important}.main .main-left .nav li .menu.active::after{transform:rotate(90deg);color:#fff !important}.main .main-left .nav li .menu:hover{cursor:pointer;color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav li .menu:hover::before{color:#fff !important}.main .main-left .nav li .menu::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.8rem;padding-top:3px;transition:all .3s;content:"\e915";color:#5e72e4;color:var(--primary)}.main .main-left .nav li .menu::after{position:absolute;right:.5rem;top:.8rem;font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-moz-osx-font-smoothing:grayscale;content:'\e90f';transition:all .15s ease;color:#ced4da;text-rendering:auto;-webkit-font-smoothing:antialiased;transition:all .3s}.main .main-left .nav li .menu[data-title=Status]:before{content:"\e906";color:#5e72e4;color:var(--primary)}.main .main-left .nav li .menu[data-title=System]:before{content:"\e90a";color:#fb6340}.main .main-left .nav li .menu[data-title=Services]:before{content:"\e909";color:#11cdef}.main .main-left .nav li .menu[data-title=NAS]:before{content:"\e90c";color:#f3a4b5}.main .main-left .nav li .menu[data-title=VPN]:before{content:"\e90b";color:#8965e0}.main .main-left .nav li .menu[data-title=Network]:before{content:"\e908";color:#8965e0}.main .main-left .nav li .menu[data-title=Bandwidth_Monitor]:before{content:"\e90d";color:#2dce89}.main .main-left .nav li .menu[data-title=Docker]:before{content:"\e911";color:#6699ff}.main .main-left .nav li .menu[data-title=Statistics]:before{content:"\e913";color:#8965e0}.main .main-left .nav li .menu[data-title=Control]:before{content:"\e912";color:#5e72e4;color:var(--primary)}.main .main-left .nav li .menu[data-title=Asterisk]:before{content:"\e914";color:#fb6340}.main .main-left .nav li a[data-title=Log_out]::before,.main .main-left .nav li .food[data-title=Log_out]::before{content:"\e907";color:#adb5bd}.lg{margin:0;padding:0 !important}.logout{display:block;margin:.8rem .5rem .1rem .5rem;padding:.675rem 0 .675rem 2.5rem;border-radius:.25rem;text-decoration:none;font-size:1rem;transition:all .2s;position:relative}.logout:before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.8rem;padding-top:3px;transition:all .3s;content:"\e907";color:#32325d !important}body[class*="node-"]>.main>.main-left>.nav>.slide>.menu::before{transition:transform .1s ease-in-out}body[class*="node-"]>.main>.main-left>.nav>.slide>.menu.active::before{transition:transform .2s ease-in-out}.main>.main-left[style*="overflow: hidden"]>.nav>.slide>.menu::before{display:none}.cbi-section,.cbi-section-error,#iptables,.Firewall form,#cbi-network>.cbi-section-node,#cbi-wireless>.cbi-section-node,#cbi-wireless>#wifi_assoclist_table,[data-tab-title],[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),[data-page="admin-system-opkg"] #maincontent>.container{font-family:inherit;font-weight:normal;font-style:normal;line-height:normal;min-width:inherit;margin:1.25rem 0;padding:0;border:0;border-radius:.25rem;background-color:#fff;box-shadow:0 0 1rem 0 rgba(136,152,170,0.15)}.cbi-section:last-child,.cbi-section-error:last-child,#iptables:last-child,.Firewall form:last-child,#cbi-network>.cbi-section-node:last-child,#cbi-wireless>.cbi-section-node:last-child,#cbi-wireless>#wifi_assoclist_table:last-child,[data-tab-title]:last-child,[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear):last-child,[data-page="admin-system-opkg"] #maincontent>.container:last-child{margin:0;border:0}.cbi-modal .cbi-section,.cbi-section .cbi-section{padding:0;box-shadow:none}.cbi-modal .cbi-tabmenu{margin-left:0}.cbi-map:not(:first-child){margin-top:1rem}.cbi-map-descr{font-size:small;line-height:1.5;padding:0 1.25rem 1rem 1.25rem}.cbi-section>.cbi-section-descr{padding-top:1rem !important;padding-bottom:1rem !important}.cbi-section>.cbi-section-descr:empty{padding-top:0 !important;padding-bottom:0rem !important}.cbi-section-descr:not(:empty){font-size:small;line-height:1.5;padding:0rem 1rem}.cbi-map-descr+fieldset{margin-top:1rem}.cbi-map-descr>abbr{cursor:help;text-decoration:underline}.cbi-section>legend{display:none !important}fieldset>fieldset,.cbi-section>.cbi-section{margin:0;padding:0;border:0;box-shadow:none}.cbi-section>h3:first-child,.panel-title{font-size:1.1rem;line-height:1;display:block;width:100%;margin:0;margin-bottom:0;padding:.8755rem 1.25rem;color:#32325d;color:var(--gray-dark)}.cbi-section>h3:first-child,.cbi-section>h4:first-child,.cbi-section>p:first-child,[data-tab-title]>h3:first-child,[data-tab-title]>h4:first-child,[data-tab-title]>p:first-child{padding:1rem 1.25rem}.cbi-section p{padding:1rem}.cbi-tblsection{overflow-x:auto}table{border-spacing:0;border-collapse:collapse}table,.table{overflow-y:hidden;width:100%;font-size:90%}.table .table-titles th{background-color:#e9ecef;background-color:var(--lighter)}table>tbody>tr>td,table>tbody>tr>th,table>tfoot>tr>td,table>tfoot>tr>th,table>thead>tr>td,table>thead>tr>th,.table>.tbody>.tr>.td,.table>.tbody>.tr>.th,.table>.tfoot>.tr>.td,.table>.tfoot>.tr>.th,.table>.thead>.tr>.td,.table>.thead>.tr>.th,.table>.tr>.td.cbi-value-field,.table>.tr>.th.cbi-section-table-cell{padding:.5rem}.container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td{padding:.6rem}.cbi-section-table-cell{line-height:1.1;align-self:flex-end;flex:1 1 auto}tr>td,tr>th,.tr>.td,.tr>.th,.cbi-section-table-row::before,#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2){border-top:thin solid #ddd;padding:1.1em 1.25rem}#cbi-wireless .td,.table[width="100%"]>.tr:first-child>.td,[data-page="admin-network-diagnostics"] .tr>.td,.tr.table-titles>.th,.tr.cbi-section-table-titles>.th{border-top:0 !important;background-color:#f6f9fc;padding:1.1em 1.25rem;line-height:1.3rem}[data-page="admin-network-network"] .cbi-value-field .cbi-dynlist{padding:0 !important}[data-page="admin-network-network"] .td>.ifacebadge>.cbi-tooltip-container{display:flex}[data-page="admin-network-network"] .td>.ifacebadge>.cbi-tooltip-container img{vertical-align:middle}#cbi-network .tr:first-child>.td{border-top:0}.table[width="100%"]>.tr:first-child>.td{margin:auto 0}.cbi-section-table-row{margin-bottom:1rem;text-align:center !important;background:#f4f4f4}.cbi-section-table-row:last-child{margin-bottom:0}.cbi-section-table-row>.cbi-value-field .cbi-dropdown,.cbi-section-table-row>.cbi-value-field .cbi-input-select,.cbi-section-table-row>.cbi-value-field .cbi-input-text,.cbi-section-table-row>.cbi-value-field .cbi-input-password{width:100%}.cbi-section-table-row>.cbi-value-field .cbi-input-text,.cbi-section-table-row>.cbi-value-field .cbi-input-password{min-width:80px}.cbi-section-table-row>.cbi-value-field [data-dynlist]>input,.cbi-section-table-row>.cbi-value-field input.cbi-input-password{width:calc(100% - 1.5rem)}.cbi-section-table-row .td{text-align:center !important}.cbi-section-table-row .td .cbi-checkbox input[type="checkbox"]{margin:0}.control-group{display:inline-flex;width:100%;flex-wrap:wrap;gap:0px}.control-group input{border-bottom-right-radius:0;border-top-right-radius:0;border-right-width:0;margin-right:0}.control-group input+button{border-bottom-left-radius:0;border-top-left-radius:0;margin-left:0;border-left-width:0}.control-group>*{vertical-align:middle}div>table>tbody>tr:nth-of-type(2n),div>.table>.tr:nth-of-type(2n){background-color:#f9f9f9}table table,.table .table,.cbi-value-field table,.cbi-value-field .table,td>table>tbody>tr>td,.td>.table>.tbody>.tr>.td,.cbi-value-field>table>tbody>tr>td,.cbi-value-field>.table>.tbody>.tr>.td{border:0}.btn,.cbi-button,.item::after{font-size:.875rem;display:inline-block;width:auto !important;padding:.5rem .75rem;margin-left:5px;margin-right:5px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:all .2s ease-in-out;text-align:center;vertical-align:middle;white-space:nowrap;text-decoration:none;border:0;border-radius:.25rem;background-color:#f0f0f0;background-image:none;appearance:none;-ms-touch-action:manipulation;touch-action:manipulation}.btn:last-child,.cbi-button:last-child{margin-right:0 !important}.btn:first-child,.cbi-button:first-child{margin-left:0 !important}.btn:only-child,.cbi-button:only-child{margin-left:5px !important;margin-right:5px !important}.btn:not(button) ul:not(.dropdown) li{padding:0}.cbi-button-up,.cbi-button-down{display:inline-block;min-width:0;padding:.2rem 1rem;font-size:0;color:transparent !important;background:url(../icon/arrow.svg) no-repeat center;background-size:12px 20px}.cbi-button-up{transform:scaleY(-1)}.cbi-button:not(select){appearance:none !important}.btn:hover,.btn:focus,.btn:active,.cbi-button:hover,.cbi-button:focus,.cbi-button:active,.item:hover::after,.item:focus::after,.item:active::after,.cbi-page-actions .cbi-button-apply+.cbi-button-save:hover,.cbi-page-actions .cbi-button-apply+.cbi-button-save:focus,.cbi-page-actions .cbi-button-apply+.cbi-button-save:active{text-decoration:none;outline:0}.btn:hover,.btn:focus,.cbi-button:hover,.cbi-button:focus,.item:hover::after,.item:focus::after{box-shadow:0 0 2px rgba(0,0,0,0.12),0 2px 2px rgba(0,0,0,0.2)}.btn:active,.cbi-button:active,.item:active::after{box-shadow:0 10px 20px rgba(0,0,0,0.19),0 6px 6px rgba(0,0,0,0.23)}.cbi-button-up:hover,.cbi-button-up:focus{box-shadow:0 0 2px rgba(0,0,0,0.12),0 -2px 2px rgba(0,0,0,0.2)}.cbi-button-up:active{box-shadow:0 -10px 20px rgba(0,0,0,0.19),0 -6px 6px rgba(0,0,0,0.23)}.btn:disabled,.cbi-button:disabled{cursor:not-allowed;pointer-events:none;opacity:.5;box-shadow:none}.alert-message [class="btn"],.modal div[class="btn"],.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down,.cbi-button-neutral,.cbi-button[name="zero"],.cbi-button[name="restart"],.cbi-button[onclick="hide_empty(this)"]{color:#fff;border:thin solid #8898aa;background-color:#8898aa}.btn.primary,.cbi-page-actions .cbi-button-save,.cbi-page-actions .cbi-button-apply+.cbi-button-save,.cbi-button-add,.cbi-button-save,.cbi-button-positive,.cbi-button-link,.cbi-button[value="Enable"],.cbi-button[value="Scan"],.cbi-button[value^="Back"],.cbi-button-neutral[onclick="handleConfig(event)"]{font-weight:normal;color:#fff !important;border:thin solid #5e72e4;border:thin solid var(--primary);background-color:#5e72e4;background-color:var(--primary)}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit,.cbi-button-apply,.cbi-button-reload,.cbi-button-action,.cbi-button[value="Submit"],.cbi-button[value="Upload"],.cbi-button[value$="Apply"],.cbi-button[onclick="addKey(event)"]{font-weight:normal;color:#fff !important;border:thin solid #5e72e4;border:thin solid var(--primary);background-color:#5e72e4;background-color:var(--primary)}.btn.danger,.cbi-section-remove>.cbi-button,.cbi-button-remove,.cbi-button-reset,.cbi-button-negative,.cbi-button[value="Stop"],.cbi-button[value="Kill"],.cbi-button[onclick="reboot(this)"],.cbi-button-neutral[value="Restart"]{font-weight:normal;color:#fff;border:thin solid #f5365c;border:thin solid var(--red);background-color:#f5365c;background-color:var(--red)}.btn[value="Dismiss"],.cbi-button[value="Terminate"],.cbi-button[value="Reset"],.cbi-button[value="Disabled"],.cbi-button[onclick^="iface_reconnect"],.cbi-button[onclick="handleReset(event)"],.cbi-button-neutral[value="Disable"]{font-weight:normal;color:#fff;border:thin solid #eea236;background-color:#f0ad4e}.cbi-button-success,.cbi-button-download{font-weight:normal;color:#fff;border:thin solid #4cae4c;background-color:#5cb85c}.cbi-page-actions .cbi-button-link:first-child{float:left}.a-to-btn{text-decoration:none}.cbi-value-field .cbi-button-add{font-weight:bold;padding:1px 6px;display:inline-block;align-items:center}.tabs{margin:0 0 1rem 0;padding:0 1rem;background-color:#FFFFFF;border-radius:.25rem;box-shadow:0 4px 8px rgba(0,0,0,0.03);white-space:nowrap;overflow-x:auto}.tabs::-webkit-scrollbar{width:1px;height:5px}.tabs::-webkit-scrollbar-thumb{background-color:#f6f9fc}.tabs::-webkit-scrollbar-track{background-color:#fff}.tabs li[class~="active"],.tabs li:hover{cursor:pointer;border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#e4e9ee;margin-bottom:0;border-radius:0}.tabs li[class~="active"] a,.tabs li:hover a{color:#5e72e4;color:var(--primary)}.tabs li{font-size:.875rem;display:inline-block;padding:.875rem 0;border-bottom:.18751rem solid rgba(0,0,0,0);margin:0;transition:all .2s}.tabs li a{text-decoration:none;color:#404040;padding:.5rem .8rem}.tabs li:hover{border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary)}.cbi-tabmenu{color:white;padding:.5rem 1rem 0 1rem;white-space:nowrap;overflow-x:auto}.cbi-tabmenu::-webkit-scrollbar{width:1px;height:5px}.cbi-tabmenu::-webkit-scrollbar-thumb{background-color:#f6f9fc}.cbi-tabmenu::-webkit-scrollbar-track{background-color:#fff}.cbi-tabmenu li{background:#dce3e9;display:inline-block;font-size:.875rem;border-top-left-radius:.25rem;border-top-right-radius:.25rem;padding:.5rem 0;border-bottom:.18751rem solid rgba(0,0,0,0);margin:0 .2rem}.cbi-tabmenu li a{text-decoration:none;color:#404040;padding:.5rem .8rem}.cbi-tabmenu li:hover{cursor:pointer;border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#e4e9ee;margin-bottom:0}.cbi-tabmenu li:hover a{color:#525f7f}.cbi-tabmenu li[class~="cbi-tab"]{border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#e4e9ee;margin-bottom:0}.cbi-tabmenu li[class~="cbi-tab"] a{color:#5e72e4;color:var(--primary)}.cbi-tab-descr{padding:.5rem 1.5rem}.cbi-section-node{padding:0}.cbi-section .cbi-section-remove:nth-of-type(2n),.container>.cbi-section .cbi-section-node:nth-of-type(2n){background-color:#f9f9f9}[data-tab-title]{overflow:hidden;height:0;opacity:0;margin:0;padding:0rem 0rem !important}[data-tab-title] p{margin-left:1rem;margin-bottom:1rem}[data-tab-active="true"]{overflow:visible;height:auto;opacity:1;transition:opacity .25s ease-in;margin:inherit !important}.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3),.cbi-section[id] .cbi-section-node:nth-of-type(4n+4){background-color:#f9f9f9}.cbi-section-node-tabbed{margin-top:0;padding:0;border:0 solid #d4d4d4;border-radius:.25rem}.cbi-tabcontainer>.cbi-value:nth-of-type(2n){background-color:#f9f9f9}.cbi-value-field{display:table-cell}.cbi-value-description{line-height:1.25;display:table-cell}.cbi-value-description abbr{color:#32325d;color:var(--gray-dark)}.cbi-value-description{font-size:small;padding:.5rem;opacity:.5}.cbi-value-title{display:table-cell;float:left;width:23rem;padding-right:2rem;text-align:right;word-wrap:break-word}.cbi-value{display:inline-block;width:100%;padding:.35rem 1rem .2rem 1rem;line-height:2.4rem}.cbi-value:first-child{padding-top:1rem}.cbi-value:last-child{padding-bottom:1rem}.cbi-value ul{line-height:1.25}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"],.cbi-value input[type="password"],.cbi-value textarea{min-width:18rem}.cbi-value input[type="password"]{border-bottom-right-radius:0;border-top-right-radius:0;font-size:.875rem;margin:.25rem 0 .25rem .1rem}.cbi-value input[type="password"]+.cbi-button-neutral{display:flex;align-items:center;justify-content:center;width:2.5rem !important;padding:.5rem 0;margin:.25rem 0;font-weight:normal;font-size:1.2rem;line-height:1.5rem;color:#fff;outline:0;background-color:#8898aa;box-shadow:none;border:1px solid #8898aa;border-radius:.25rem;border-top-left-radius:0;border-bottom-left-radius:0}#cbi-firewall-zone .cbi-input-select,#cbi-network-switch_vlan .cbi-input-select{min-width:11rem}#cbi-network-switch_vlan .cbi-input-text{max-width:3rem}.cbi-input-invalid{color:#f5365c !important;border-color:#f5365c !important}.cbi-section-error{font-weight:bold;line-height:1.42857143;margin:18px;padding:6px;border:thin solid #f5365c;border-radius:3px;background-color:#fce6e6}.cbi-section-error ul{margin:0 0 0 20px}.cbi-section-error ul li{font-weight:bold;color:#f5365c}.td[data-title]::before{font-weight:bold;display:none;padding:.25rem 0;content:attr(data-title) ":\20";text-align:left;white-space:nowrap}.tr.placeholder .td[data-title]::before{display:none}.tr[data-title]::before,.tr.cbi-section-table-titles.named::before{font-weight:bold;display:table-cell;align-self:center;flex:1 1 5%;padding:.25rem;content:attr(data-title) "\20";text-align:center;vertical-align:middle;white-space:normal;word-wrap:break-word}.cbi-rowstyle-1{background-color:#f9f9f9}.cbi-rowstyle-2{background-color:#eee}.cbi-rowstyle-2 .cbi-button-up,.cbi-rowstyle-2 .cbi-button-down,body:not(.Interfaces) .cbi-rowstyle-2:first-child{background-color:#fff !important}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto !important}.td.cbi-section-actions{text-align:right !important;vertical-align:middle}.td.cbi-section-actions>*{display:inline-flex}.td.cbi-section-actions>*>*,.td.cbi-section-actions>*>form>*{margin:0 5px;display:flex;align-items:center}.td.cbi-section-actions>*>form{display:inline-flex;margin:0}.cbi-checkbox{margin:0 .25rem}.cbi-dynlist{line-height:1.3;flex-direction:column;min-height:30px;cursor:text}.cbi-dynlist>.item{display:inline-flex;flex-wrap:nowrap;margin:.25rem 0;position:relative;max-width:25rem;pointer-events:none;color:#8898aa;outline:0}.cbi-dynlist>.item::after{content:"\00D7";pointer-events:auto;display:flex;align-items:center;justify-content:center;width:2.5rem !important;margin:0;font-weight:normal;font-size:1.2rem;line-height:1.5rem;color:#fff;border:1px solid #f5365c;border-radius:0 .25rem .25rem 0;outline:0;background-color:var(--red);background-image:none;box-shadow:none;box-sizing:border-box}.cbi-dynlist>.item>span{display:block;padding:.5rem .75rem;min-width:15.5rem;width:15.5rem;transition:box-shadow .15s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-word;font-size:.875rem;line-height:24px;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem 0 0 .25rem;outline:0;background-image:none;box-shadow:none;box-sizing:border-box}.cbi-dynlist>.add-item{display:inline-flex;align-items:center;width:100%;min-width:16rem;margin:.25rem 0;gap:0;flex-wrap:nowrap}.cbi-dynlist>.add-item input{display:block;padding:.5rem .75rem;box-sizing:border-box;min-width:15.5rem;width:15.5rem;transition:box-shadow .15s ease;white-space:nowrap;word-break:break-word;font-size:.875rem;line-height:1.5rem;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem 0 0 .25rem;border-right-width:0;outline:0;background-image:none;box-shadow:none}.cbi-dynlist>.add-item .cbi-button{display:flex;width:auto !important;padding-left:.8rem;padding-right:.8rem;margin-left:0;align-items:center;justify-content:center;font-size:.875rem;line-height:1.5rem;outline:0;background-image:none;background-color:var(--gray);box-shadow:none;color:var(--white);border-color:var(--gray);border-radius:.25rem;border-top-left-radius:0;border-bottom-left-radius:0}.cbi-dynlist>.add-item .cbi-button-add{width:2.5rem !important;padding:.5rem 0 !important;font-weight:normal;font-size:1.2rem;color:#fff;background-color:var(--primary);border:1px solid var(--primary)}.cbi-dynlist>.add-item:not([ondrop])>input{overflow:hidden;min-width:15.5rem;width:15.5rem;white-space:nowrap;text-overflow:ellipsis}.cbi-dynlist[name="sshkeys"]>.item{max-width:none}.cbi-dynlist>.cbi-dynlist>.add-item[ondrop]>input{min-width:13rem}.cbi-dynlist,.cbi-dropdown{position:relative;display:inline-flex;min-height:2.1875rem}.cbi-dropdown[placeholder*="select"]{max-width:25rem;height:auto;margin-top:-3px}.cbi-dropdown>ul{display:flex;overflow-x:hidden;overflow-y:auto;width:100%;margin:0 !important;padding:0;list-style:none;outline:0}.cbi-dropdown>ul.preview{display:none}.cbi-button-apply>ul.preview{display:none}.cbi-button-apply>ul.preview li{color:#fff}.cbi-button-apply>ul:first-child li{color:#fff}.cbi-dropdown>.open{flex-basis:15px}.cbi-dropdown>.open,.cbi-dropdown>.more{font-size:1rem;font-weight:900;line-height:1em;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;justify-content:center;padding:0 .25em;cursor:default;text-align:center;outline:0}.cbi-dropdown>.more,.cbi-dropdown>ul>li[placeholder]{font-weight:bold;display:none;color:#777;text-shadow:none}.cbi-dropdown>ul>li{display:none;overflow:hidden;align-items:center;align-self:center;flex-grow:1;flex-shrink:1;min-height:20px;padding:.125rem .25em;white-space:nowrap;text-overflow:ellipsis}.cbi-dropdown>ul>li .hide-open{display:initial}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>ul>li[display]:not([display="0"]){border-left:thin solid #ccc}.cbi-dropdown[empty]>ul{max-width:1px}.cbi-dropdown>ul>li>form{display:none;margin:0;padding:0;pointer-events:none}.cbi-dropdown>ul>li img{margin-right:.25em;vertical-align:middle}.cbi-dropdown>ul>li>form>input[type="checkbox"]{height:auto;margin:0}.cbi-dropdown>ul>li input[type="text"]{height:20px}.cbi-dropdown[open]>ul.dropdown{position:absolute;z-index:1100;display:block;width:auto;min-width:100%;max-width:none;max-height:200px !important;border:0 solid #918e8c;background:#ffffff;box-shadow:0 0 4px #918e8c;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;color:var(--main-menu-color);margin-left:0 !important;left:0}.cbi-dropdown[open]>ul.dropdown li{color:#000}.cbi-dropdown>ul>li[display],.cbi-dropdown[open]>ul.preview,.cbi-dropdown[open]>ul.dropdown>li,.cbi-dropdown[multiple]>ul>li>label,.cbi-dropdown[multiple][open]>ul.dropdown>li,.cbi-dropdown[multiple][more]>.more,.cbi-dropdown[multiple][empty]>.more{display:flex;align-items:center;flex-grow:1}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder],.cbi-dropdown[multiple][open]>ul.dropdown>li>form{display:block}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:initial}.cbi-dropdown[open]>ul.dropdown>li{border-bottom:thin solid #ccc;padding:.5rem .8rem}.cbi-dropdown[open]>ul.dropdown>li label{margin-left:.5rem}.cbi-dropdown[open]>ul.dropdown>li[selected]{background:#e4e9ee}.cbi-dropdown[open]>ul.dropdown>li.focus{background:#e4e9ee;outline:none}.cbi-dropdown[open]>ul.dropdown>li:last-child{margin-bottom:0;border-bottom:0}.cbi-dropdown[open]>ul.dropdown>li[unselectable]{opacity:.7}.cbi-dropdown[open]>ul.dropdown>li>input.create-item-input:first-child:last-child{width:100%}.cbi-dropdown[disabled]{pointer-events:none;opacity:.6}.cbi-dropdown .zonebadge{width:100%}.cbi-dropdown[open] .zonebadge{width:auto}.cbi-progressbar{position:relative;display:flex;width:100%;font-size:.75rem;background-color:#e9ecef;border-radius:.5rem;height:1rem;overflow:hidden}.cbi-progressbar>div{display:block;position:absolute;height:100%;background-color:var(--bar-bg);border-radius:.5rem;transition:width .3s}.cbi-progressbar::after{content:attr(title);position:absolute;font-size:.75rem;color:var(--bs-heading-color);width:100%;height:100%;text-align:center;line-height:1rem;z-index:2}#modal_overlay{position:fixed;z-index:900;top:0;right:10000px;bottom:0;left:-10000px;overflow-y:scroll;transition:opacity .125s ease-in;opacity:0;background:rgba(0,0,0,0.7);-webkit-overflow-scrolling:touch}.modal{display:flex;align-items:center;flex-wrap:wrap;width:90%;min-width:270px;max-width:600px;min-height:32px;margin:5em auto;padding:1rem;border-radius:.25rem !important;background:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.modal>*{line-height:normal;flex-basis:100%;margin-bottom:.5em;max-width:100%}.modal>pre,.modal>textarea{font-size:1rem;font-size-adjust:.35;overflow:auto;margin-bottom:.5em;padding:8.5px;cursor:auto;white-space:pre-wrap;color:#eee;outline:0;background-color:#101010;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.modal>h4{display:block;flex-grow:1;max-width:none;padding:1rem;margin:-1rem -1rem 0 -1rem;font-size:1rem;box-shadow:0 4px 8px rgba(0,0,0,0.03);border-radius:.25rem 0 0 .25rem}.modal h5{margin-top:1rem;font-weight:600}.modal label>input[type="checkbox"]{top:0}.modal ul{margin-left:2.2em}.modal ul:not(.cbi-tabmenu){margin-top:1rem}.modal ul li{list-style-type:square;color:#808080}.modal p{word-break:break-word;margin-top:1rem}.modal .label{font-size:.6rem;font-weight:normal;padding:.1rem .3rem;padding-bottom:0;cursor:default;border-radius:0}.modal .label.warning{background-color:#f0ad4e !important}.modal .btn{padding:.45rem .8rem}.modal.cbi-modal{max-width:90%;max-height:none}body.modal-overlay-active{overflow:hidden;height:100vh}body.modal-overlay-active #modal_overlay{right:0;left:0;opacity:1}.spinning{position:relative;padding-left:32px !important}.spinning::before{position:absolute;top:0;bottom:0;left:.2em;width:32px;content:"";background:url(/luci-static/resources/icons/loading.gif) no-repeat center;background-size:16px}#view{border-radius:.25rem;overflow:hidden}#view>.spinning{position:fixed;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);padding:1rem;border-radius:.5rem;background:#ffffff;box-shadow:0 0 1rem 0 rgba(136,152,170,0.15)}.hidden{display:none}.left,.left::before{text-align:left !important}.right,.right::before{text-align:right !important}.center,.center::before{text-align:center !important}.top{align-self:flex-start !important;vertical-align:top !important}.bottom{align-self:flex-end !important;vertical-align:bottom !important}.inline{display:inline}.cbi-page-actions{padding:1rem;text-align:right;justify-content:flex-end}.cbi-page-actions>form[method="post"]{display:inline-block}.th[data-type="button"],.td[data-type="button"],.th[data-type="fvalue"],.td[data-type="fvalue"]{flex:1 1 2em;text-align:center}.ifacebadge{display:inline-flex;align-items:center;gap:.2rem;padding:.25rem .8rem;background:#eee;border-radius:4px}td>.ifacebadge,.td>.ifacebadge{font-size:.875rem;background-color:#f0f0f0}.ifacebadge>em,.ifacebadge>img{display:inline-block;margin:0 .75rem}.ifacebadge>img+img{margin:0 .2rem 0 0}.network-status-table{display:flex;flex-wrap:wrap}.network-status-table .ifacebox{flex-grow:1;border-radius:.25rem;overflow:hidden;margin:1rem}.network-status-table .ifacebox-body{display:flex;flex-direction:column;height:100%;gap:.5em}.network-status-table .ifacebox-body>span{flex:10 10 auto}.network-status-table .ifacebox-body>div{display:flex;flex-wrap:wrap;gap:.5rem;height:100%}.network-status-table .ifacebox-body .ifacebadge{align-items:center;flex:1 1 auto;min-width:220px;padding:.5em;background-color:#fff}.network-status-table .ifacebox-body .ifacebadge>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cbi-input-textarea{font-family:inherit;width:100%;font-size:.875rem;min-height:14rem;padding:.8rem;color:#8898aa;border-radius:.25rem;border:1px solid #dee2e6;min-width:16rem}#content_syslog{box-shadow:0 4px 8px rgba(0,0,0,0.03)}#syslog{font-size:small;font-family:'Google Sans';line-height:1.25;overflow-y:hidden;width:100%;min-height:15rem;padding:1rem;resize:none;color:#242424;border:0;border-radius:.25rem;background-color:#ffffff}#syslog:focus{outline:0}.uci-change-list{font-family:inherit;overflow:scroll;width:100%;display:flex;flex-direction:column;flex-wrap:wrap}.uci-change-list ins,.uci-change-legend-label ins{display:block;padding:2px;text-decoration:none;border:thin solid #0f0;background-color:#cfc}.uci-change-list del,.uci-change-legend-label del{font-style:normal;display:block;padding:2px;text-decoration:none;border:thin solid #f00;background-color:#fcc}.uci-change-list var,.uci-change-legend-label var{font-style:normal;display:block;padding:2px;text-decoration:none;border:thin solid #ccc;background-color:#eee}.uci-change-list var ins,.uci-change-list var del{font-style:normal;padding:0;white-space:pre;border:0}.uci-change-legend{padding:5px}.uci-change-legend-label{float:left;width:150px}.uci-change-legend-label>ins,.uci-change-legend-label>del,.uci-change-legend-label>var{display:block;float:left;width:10px;height:10px;margin-right:4px}.uci-change-legend-label var ins,.uci-change-legend-label var del{line-height:.4;border:0}.uci-change-list var,.uci-change-list del,.uci-change-list ins{padding:.5rem}.uci-dialog .cbi-section{padding:.5rem}.uci-dialog .cbi-section .uci-change-legend{line-height:15px;padding:10px 20px 0 20px}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label{padding:0;margin:0;position:relative;float:none;display:inline-block;width:25%}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>ins,.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>del{width:14px;height:14px}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var{position:relative;width:14px;height:14px}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var ins,.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var del{position:absolute;left:2px;top:2px;right:2px;bottom:2px}.uci-dialog .cbi-section .uci-change-list{overflow:auto}.uci-dialog .cbi-section .uci-change-list+.right .btn{color:#333}.uci-dialog .cbi-section .uci-change-list+.right .cbi-dropdown ul:not(.dropdown) li{color:#fff}.uci-dialog .cbi-section .uci-change-list+.right .cbi-button{padding:.45rem .8rem}#iwsvg,#iwsvg2,#bwsvg{border:thin solid #d4d4d4 !important}#iwsvg,[data-page="admin-status-realtime-bandwidth"] #bwsvg{border-top:0 !important}.ifacebox{line-height:1.25;display:inline-flex;overflow:hidden;flex-direction:column;border-radius:4px;min-width:100px;background-color:#f9f9f9}.ifacebox-head{padding:.25em;background:#eee}.ifacebox-head.active{background:#5e72e4;background:var(--primary)}.ifacebox-head.active *{color:#fff;color:var(--white)}.ifacebox-body{padding:.875rem 1rem;line-height:1.6em}.cbi-image-button{margin-left:.5rem}.zonebadge{display:inline-block;padding:.2rem .5rem;border-radius:4px}.zonebadge .ifacebadge{margin:.1rem .2rem;padding:.2rem .3rem;border:thin solid #6c6c6c}.zonebadge>input[type="text"]{min-width:10rem;margin-top:.3rem;padding:.16rem 1rem}.zonebadge>em,.zonebadge>strong{display:inline-block;margin:0 .2rem}.cbi-value-field .cbi-input-checkbox,.cbi-value-field .cbi-input-radio{margin-top:.1rem}.cbi-value-field>ul>li{display:flex}.cbi-value-field>ul>li>label{margin-top:.5rem}.cbi-value-field>ul>li .ifacebadge{margin-top:-0.5rem;margin-left:.4rem;background-color:#eee}.cbi-section-table-row>.cbi-value-field .cbi-dropdown{min-width:3rem}.cbi-section-create{display:inline-flex;align-items:center;padding:.5rem 1rem}.cbi-section-remove{padding:.5rem 1rem}div.cbi-value var,td.cbi-value-field var,.td.cbi-value-field var{font-style:italic;color:#0069d6}.cbi-optionals{padding:1rem 1rem 0 1rem;border-top:thin solid #ccc}.cbi-dropdown-container{position:relative}.cbi-tooltip-container,span[data-tooltip],span[data-tooltip] .label{cursor:help !important}.cbi-tooltip{position:absolute;z-index:1000;left:-1000px;padding:2px 5px;transition:opacity .25s ease-out;white-space:pre;pointer-events:none;opacity:0;border-radius:3px;background:#fff;box-shadow:0 0 2px #444}.cbi-tooltip-container:hover .cbi-tooltip{left:auto;transition:opacity .25s ease-in;opacity:1}.zonebadge .cbi-tooltip{margin:-1.5rem 0 0 -0.5rem;padding:.25rem;background:inherit}.zonebadge-empty{color:#404040;background:repeating-linear-gradient(45deg, rgba(204,204,204,0.5), rgba(204,204,204,0.5) 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}.zone-forwards{display:flex;min-width:10rem}.zone-forwards>*{flex:1 1 45%}.zone-forwards>span{flex-basis:10%;padding:0 .25rem;text-align:center}.zone-forwards .zone-src,.zone-forwards .zone-dest{display:flex;flex-direction:column}.label{font-size:.875rem;font-weight:bold;padding:.3rem .8rem;white-space:nowrap;text-decoration:none;text-transform:uppercase;color:#fff !important;border-radius:3px;background-color:#bfbfbf;text-shadow:none}label>input[type="checkbox"],label>input[type="radio"]{position:relative;top:.4rem;right:.2rem;margin:0;vertical-align:bottom}label[data-index][data-depends]{padding-right:2em}.showSide{display:none}.darkMask{position:fixed;z-index:99;display:none;width:100%;height:100%;content:"";top:0;background-color:rgba(0,0,0,0.56);transition:all .2s}.darkMask.active{display:block}#diag-rc-output>pre,#command-rc-output>pre,[data-page="admin-services-wol"] .notice code{font-size:1.2rem;font-size-adjust:.35;line-height:normal;display:block;overflow-y:hidden;width:100%;padding:8.5px;white-space:pre;color:#eee;background-color:#101010;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}[data-page="admin-network-diagnostics"] .table{box-shadow:none}[data-page="admin-network-diagnostics"] .cbi-section{padding:1rem;font-family:monospace;background:#fff !important}[data-page="admin-network-diagnostics"] textarea{background:transparent;border-radius:.25rem;font-family:'Google Sans' !important;color:#8898aa;border:1px solid #dee2e6;padding:.5rem}[data-page="admin-network-diagnostics"] .tr>.td{background-color:#fff !important;border-bottom:1px solid #dee2e6 !important}input[name="ping"],input[name="traceroute"],input[name="nslookup"]{width:80%}.node-status-overview>.main fieldset:nth-child(4) .td:nth-child(2),.node-status-processes>.main .table .tr .td:nth-child(3){white-space:normal}div[style*="display:grid;grid-template-columns:repeat"]{display:flex !important;justify-content:space-evenly !important;padding-bottom:1rem;flex-wrap:wrap;font-family:'Google Sans'}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox{text-align:center;flex-basis:100px}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox .ifacebox-body{font-size:.7rem;padding:.875rem}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox .ifacebox-body .cbi-tooltip-container{font-size:inherit !important}@media screen and (max-width:484px){div[style*="display:grid;grid-template-columns:repeat"] .ifacebox{flex-basis:80px}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox .ifacebox-body{padding:.875rem .5rem;font-size:.6rem}}[data-page="admin-system-attendedsysupgrade"] #view .cbi-button{margin-left:0 !important;margin-top:1rem !important}[data-page="admin-system-reboot"] p{padding-left:1.5rem}[data-page="admin-system-reboot"] p>span{position:relative;top:.1rem;left:1rem}[data-page="admin-system-reboot"] .cbi-button{background:#fb6340 !important;border-color:#fb6340 !important;margin-left:0 !important}[data-page="admin-system-reboot"] #view>h2:first-child+p{margin-bottom:1rem}[data-page="admin-system-poweroff"] .container h2+br+p{margin-bottom:1rem;padding-left:1.5rem}[data-page="admin-vpn-passwall"] h4{background:transparent}[data-page="admin-system-filetransfer"] #cbi-upload{margin-top:0}[data-page="admin-system-filetransfer"] .cbi-section-table{box-shadow:0 4px 8px rgba(0,0,0,0.03)}#cbi-samba [data-tab="template"] .cbi-value-field{display:block}#cbi-samba [data-tab="template"] .cbi-value-title{width:auto;padding-bottom:.6rem}[data-page="admin-system-admin"] .cbi-map h2,[data-page="admin-system-admin-password"] .cbi-map h2,[data-page="admin-system-admin"] .cbi-map .cbi-map-descr,[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr{margin-left:0;color:#32325d;color:var(--gray-dark)}[data-page="admin-system-admin-sshkeys"] .cbi-dynlist{margin-left:1rem}[data-page="admin-system-opkg"] h2{margin-left:0;color:#32325d;color:var(--gray-dark)}[data-page="admin-system-opkg"] input[name="filter_i18n"]{top:2px;vertical-align:text-top}.controls{margin:.5em 1rem 1em 1rem !important}.controls>*>.btn:not([aria-label$="page"]){flex-grow:initial !important;margin-top:.25rem}.controls>#pager>.btn[aria-label$="page"]{font-size:1.4rem;font-weight:bold}.controls>*>label{margin-bottom:.2rem}[data-page="admin-system-opkg"] div.btn{line-height:3;display:inline;padding:.3rem .6rem}[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),[data-page="admin-system-opkg"] #maincontent>.container{margin-top:1rem;padding-top:.01rem}[data-page="admin-system-opkg"] #maincontent>.container{margin:0 1.25rem 1rem 1.25rem;margin-bottom:1rem}.td.version,.td.size{white-space:normal !important;word-break:break-word}.cbi-tabmenu+.cbi-section{margin-top:0}[data-page="admin-system-system"] .control-group{margin-top:.5rem}[data-page="admin-system-system"] .cbi-dynlist{margin:.25rem 0}[data-page="admin-system-startup"] [data-tab-title] p{margin-left:0;margin-bottom:0;position:relative}[data-page="admin-system-startup"] textarea{line-height:1.25;overflow-y:auto;width:100%;min-height:15rem;padding:1rem;resize:none;color:#8898aa;border-radius:.25rem;border:1px solid #dee2e6}[data-page="admin-system-startup"] textarea:focus-visible{outline:none;box-shadow:none;border:1px solid var(--primary)}[data-page="admin-system-crontab"] #view p{margin-bottom:1rem}[data-page="admin-system-crontab"] #view p:last-child{margin-bottom:0}[data-page="admin-system-crontab"] #view p textarea{line-height:1.25;overflow-y:hidden;width:100%;min-height:15rem;padding:1rem;resize:none;background-color:transparent;background:var(--white);outline:none;color:#8898aa;border-radius:.25rem;border:1px solid #dee2e6}[data-page="admin-system-attendedsysupgrade-configuration"] .cbi-map .cbi-map-descr{padding-bottom:0}[data-page="admin-system-flash"] .cbi-value{padding:0 1rem}[data-page="admin-system-flash"] .cbi-section .cbi-section{margin-top:0}[data-page="admin-system-flash"] .cbi-map-tabbed{border-radius:.25rem}[data-page="admin-system-flash"] .cbi-section-node{padding-top:0;padding-bottom:.5rem}[data-page="admin-system-flash"] legend{font-size:1.2rem;width:100%;display:block;border-bottom:1px solid rgba(0,0,0,0.05);line-height:1.5;margin-bottom:0;letter-spacing:.1rem;color:#32325d;font-weight:bold;padding:1rem 0 1rem 1rem}[data-page="admin-system-flash"] .cbi-section-descr{font-weight:600;padding:1rem 0 1rem 1rem;color:#525f7f}[data-page="admin-system-flash"] .cbi-page-actions{padding:0rem 1rem 1rem 0rem}[data-page="admin-system-flash"] .modal label>input[type="checkbox"]{top:-0.25rem}[data-page="admin-system-flash"] .modal .btn{white-space:normal !important}[data-page="admin-system-flash"] .modal label>input[type="checkbox"]{vertical-align:text-top;top:auto}#cbi-wireless>#wifi_assoclist_table>.tr{box-shadow:inset 1px -1px 0 #ddd,inset -1px -1px 0 #ddd}#cbi-wireless>#wifi_assoclist_table>.tr.placeholder>.td{right:33px;bottom:33px;left:33px;border-top:thin solid #ddd !important}#cbi-wireless>#wifi_assoclist_table>.tr.table-titles{box-shadow:inset 1px 0 0 #ddd,inset -1px 0 0 #ddd}#cbi-wireless>#wifi_assoclist_table>.tr.table-titles>.th{border-bottom:thin solid #ddd;box-shadow:0 -1px 0 0 #ddd}#wifi_assoclist_table>.tr>.td[data-title="RX Rate / TX Rate"]{width:23rem}[data-page="admin-network-dhcp"] .cbi-value{padding:0}[data-page="admin-network-dhcp"] [data-tab-active="true"]{padding:1rem 1rem !important}#iptables{margin:0}.Firewall form{margin:2rem 2rem 0 0;padding:0;box-shadow:none}#cbi-firewall-redirect table *,#cbi-network-switch_vlan table *,#cbi-firewall-zone table *{font-size:small}#cbi-firewall-redirect table input[type="text"],#cbi-network-switch_vlan table input[type="text"],#cbi-firewall-zone table input[type="text"]{width:5rem}#cbi-firewall-redirect table select,#cbi-network-switch_vlan table select,#cbi-firewall-zone table select{min-width:3.5rem}#cbi-network-switch_vlan .th,#cbi-network-switch_vlan .td{flex-basis:12%}#cbi-firewall-zone .table,#cbi-network-switch_vlan .table{display:block}#cbi-firewall-zone .td,#cbi-network-switch_vlan .td{width:100%}[data-page="admin-network-firewall-custom"] #view p,[data-page="admin-status-routes"] #view p{padding:0 1.5rem;margin-bottom:1rem}[data-page="admin-network-firewall-custom"] #view p textarea,[data-page="admin-status-routes"] #view p textarea{padding:1rem;border-radius:.25rem}[data-page="admin-network-firewall-custom"] #view>h3,[data-page="admin-status-routes"] #view>h3{border-radius:.25rem .25rem 0 0}#applyreboot-container{margin:2rem}#applyreboot-section{line-height:300%;margin:2rem}.OpenVPN a{line-height:initial !important}.commandbox{width:24% !important;margin:10px 0 0 10px !important;padding:.5rem 1rem;border-bottom:thin solid #ccc;background:#eee;box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.commandbox h3{line-height:normal !important;overflow:hidden;margin:6px 0 !important;white-space:nowrap;text-overflow:ellipsis}.commandbox div{left:auto !important}.commandbox code{position:absolute;overflow:hidden;max-width:60%;margin-left:4px;padding:2px 3px;white-space:nowrap;text-overflow:ellipsis}.commandbox code:hover{overflow-y:auto;max-height:50px;white-space:normal}.commandbox p:first-of-type{margin-top:-6px}.commandbox p:nth-of-type(2){margin-top:2px}[data-page^="admin-system-commands"] .panel-title,[data-page^="command-cfg"] .mobile-hide,[data-page^="command-cfg"] .showSide{display:none}#command-rc-output .alert-message{line-height:1.42857143;position:absolute;top:40px;right:32px;max-width:40%;margin:0;animation:anim-fade-in 1.5s forwards;word-break:break-word;opacity:0}@keyframes anim-fade-in{100%{opacity:1}}input[type="checkbox"]{appearance:none !important;-webkit-appearance:none !important;border:1px solid var(--primary);width:16px !important;height:16px !important;padding:0;cursor:pointer;transition:all .2s;margin:.75rem 0 0 0}input[type="checkbox"]:checked{border:1px solid #5e72e4;border:1px solid var(--primary);background-image:url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important;background-color:#5e72e4;background-color:var(--primary);background-size:70%;background-repeat:no-repeat;background-position:center}.fb-container .cbi-button{height:auto !important}#cbi-usb_printer-printer em{display:block;padding:1rem;text-align:center}pre.command-output{padding:1.5rem}[data-page="admin-nlbw-display"] .cbi-section[data-tab="export"]{padding:1.5rem !important}[data-page="admin-nlbw-backup"] form{padding-left:1.5rem}[data-page="admin-status-iptables"] .right{margin-bottom:0 !important}[data-page="admin-services-ttyd"] .container{display:flex;flex-direction:column}[data-page="admin-services-ttyd"] #view{flex:1}[data-page="admin-services-ttyd"] #view iframe{height:100%}[data-page="admin-system-fileassistant"] .fb-container .panel-title{padding:.5rem .75rem !important}[data-page="admin-system-fileassistant"] .cbi-section.fb-container{padding:.5rem}[data-page="admin-system-fileassistant"] .fb-container .panel-container{border-bottom-color:#dee2e6}[data-page^="admin-services-openclash"] .cbi-tabmenu>li{border-right:none !important;margin:0 .4rem 0 0 !important}[data-page^="admin-services-openclash"] .cbi-tabmenu>li:last-child{margin-right:0 !important}[data-page^="admin-services-openclash"] #tab-content .dom{padding:0 1rem 1rem 1rem}[data-page^="admin-services-openclash"] .cbi-input-file{padding:.2813rem;box-sizing:content-box;width:15rem !important}[data-page^="admin-services-openclash"] [id="container.openclash.config.debug"] fieldset{border:none !important;padding:1rem !important}[data-page^="admin-services-openclash"] #diag-rc-output>pre,[data-page^="admin-services-openclash"] #dns-rc-output>pre{font-size:.875rem;color:#8898aa;border:1px solid #dee2e6;background-color:transparent;border-radius:.25rem;font-family:'Google Sans' !important;box-shadow:none}[data-page^="admin-services-openclash"] #debug-rc-output>textarea{font-family:'Google Sans' !important}[data-page^="admin-services-openclash"] .CodeMirror{font-size:inherit;font-family:'Google Sans' !important}[data-page^="admin-services-openclash"] .cbi-button-up,[data-page^="admin-services-openclash"] .cbi-button-down{padding:.8rem 1.5rem;background-color:#f1f1f1;font-size:0}[data-page^="admin-services-openclash"] select#CORE_VERSION,[data-page^="admin-services-openclash"] select#RELEASE_BRANCH{width:auto}@media all and (-ms-high-contrast:none){.main>.main-left>.nav>.slide>.menu::before{top:30.25%}.main>.main-left>.nav>li:last-child::before{top:20%}.showSide::before{top:-12px}}@media screen and (max-width:1600px){header>.fill>.container>#logo{margin:0 2.5rem 0 .5rem}.main-left{width:calc(0% + 13rem)}.btn:not(button),.label{padding:.5rem .75rem}.cbi-value-title{width:15rem;padding-right:.6rem}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"],.cbi-value input[type="password"],.cbi-value textarea{min-width:18rem}#cbi-firewall-zone .cbi-input-select{min-width:9rem}.cbi-input-textarea{font-size:small}.node-admin-status>.main fieldset li>a{padding:.3rem .6rem}}@media screen and (max-width:1366px){header>.fill>.container{cursor:default}.main-left{width:calc(0% + 13rem)}.tabs>li>a,.cbi-tabmenu>li>a{padding:.2rem .8rem}.panel-title{font-size:1.1rem;padding-bottom:1rem}table{font-size:.875rem !important;width:100% !important}.table .cbi-input-text{width:100%}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"],.cbi-value input[type="password"]{min-width:16rem}#cbi-firewall-zone .cbi-input-select{min-width:5.5rem}.main>.main-left>.nav>li,.main>.main-left>.nav>li>a,.main .main-left .nav>li>a:first-child,.main>.main-left>.nav>.slide>.menu,.main>.main-left>.nav>li>[data-title="Log_out"]{font-size:.9rem}.main>.main-left>.nav>.slide>.slide-menu>li>a{font-size:.875rem}#modal_overlay{top:0rem}[data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table){display:block}[data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table),[data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table),[data-page="admin-network-hosts"] .table,[data-page="admin-network-routes"] .table{overflow-y:visible}.commandbox{width:32% !important}.btn:not(button),.cbi-button{font-size:.875rem}}@media screen and (max-width:1152px){header>.fill>.container>#logo{display:none}header>.fill>.container>.brand{position:relative}html,.main{overflow-y:visible}.main>.loading>span{top:25%}.main-left{width:calc(0% + 13rem)}body:not(.logged-in) .showSide{visibility:hidden;width:0;margin:0}.node-main-login>.main .cbi-value-title{text-align:left}.cbi-value-title{width:12rem;padding-right:1rem}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"]{width:16rem;min-width:16rem}.cbi-value input[name^="pw"],.cbi-value input[data-update="change"]:nth-child(2){width:13rem !important;min-width:13rem}#diag-rc-output>pre,#command-rc-output>pre,[data-page="admin-services-wol"] .notice code{font-size:1rem}.table{display:block}.Interfaces .table{overflow-x:hidden}#packages.table{display:grid}.tr{display:flex;flex-direction:row;flex-wrap:wrap}.Overview .table[width="100%"]>.tr{flex-wrap:nowrap}.tr.placeholder{border-bottom:thin solid #ddd}.tr.placeholder>.td,#cbi-firewall .tr>.td,#cbi-network .tr:nth-child(2)>.td,.cbi-section #wifi_assoclist_table .tr>.td{border-top:0}.th,.td{display:inline-block;align-self:flex-start;flex:2 2 10%;text-overflow:ellipsis;word-wrap:break-word}.td select,.td input[type="text"]{width:100%;word-wrap:normal}.td [data-dynlist]>input,.td input.cbi-input-password{width:calc(100% - 1.5rem)}.td[data-type="button"],.td[data-type="fvalue"]{flex:1 1 12.5%;text-align:left}.th.cbi-value-field,.td.cbi-value-field,.th.cbi-section-table-cell,.td.cbi-section-table-cell{flex-basis:auto;padding-top:1rem}.cbi-section-table-row{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.td.cbi-value-field,.cbi-section-table-cell{display:inline-block;flex:10 10 auto;flex-basis:50%;text-align:center}.td.cbi-section-actions{vertical-align:bottom}.tr.table-titles,.tr.cbi-section-table-titles,.tr.cbi-section-table-descr{display:none}.tr[data-title]::before,.tr.cbi-section-table-titles.named::before{font-size:.9rem;display:block;flex:1 1 100%;border-bottom:thin solid rgba(0,0,0,0.26);background:#e9ecef}.td[data-title],[data-page^="admin-status-realtime"] .td[id]{text-align:left}.td[data-title]::before{display:block}.cbi-button+.cbi-button{margin-left:0}.td.cbi-section-actions>*>*,.td.cbi-section-actions>*>form>*{margin:2.1px 3px}.Firewall form{position:static !important;margin:0 0 2rem 0;padding:2rem;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.Firewall form input{width:100% !important;margin:0;margin-top:1rem}.Firewall .center,.Firewall .center::before{text-align:left !important}.commandbox{width:100% !important;margin-left:0 !important}.btn:not(button),.cbi-button{font-size:.875rem}}@media screen and (max-width:768px){body{font-size:.875rem}.cbi-progressbar::after{font-size:.6rem}.main-left{position:fixed;z-index:100;width:0}.main-left.active{width:13rem}.main-right{width:100%}.main-right.active{overflow-y:hidden}.darkMask.active{display:block}.showSide{padding:.1rem;position:relative;z-index:99;display:inline-block !important}.showSide::before{font-family:'argon' !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e20e";font-size:1.7rem}header>.fill>.container>.flex1>.brand{display:inline-block}.main>.main-left>.nav>.slide>.slide-menu>li>a{font-size:.875rem}}@media screen and (max-width:600px){.mobile-hide{display:none}#maincontent>.container{margin:0 1rem 1rem 1rem}.cbi-value-title{text-align:left}.cbi-dynlist p{padding:.5rem 1rem}body{overflow-x:hidden}.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field{width:16rem}.node-main-login footer{display:none}.tabs::-webkit-scrollbar,.cbi-tabmenu::-webkit-scrollbar{width:0px;height:0px}.cbi-value-field,.cbi-value-description{display:block !important;padding-left:0 !important;padding-right:0 !important}[data-page="admin-system-admin-password"] .cbi-value-field{display:table-cell !important}.modal.cbi-modal{max-width:100%;max-height:none}.modal{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:270px;max-width:600px;min-height:32px;margin:5em auto;padding:1em;border-radius:3px !important;background:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.cbi-dropdown[open]>ul.dropdown{margin-bottom:1rem}.login-page .login-container footer{display:none}}@media screen and (min-width:600px){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{background:var(--primary);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}::-webkit-scrollbar-thumb:active{background:var(--primary)}}@media screen and (max-width:480px){.mobile-hide{display:none}.login-page .login-container{margin-left:0rem !important;width:100%}.login-page .login-container .login-form .form-login .input-group::before{color:#525461}.login-page .login-container .login-form .form-login .input-group input{color:#525461;border-bottom:white 1px solid;border-bottom:var(--white) 1px solid;border-radius:0}}/*# sourceMappingURL=cascade.css.map */ \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/dark.css b/luci-theme-argon/htdocs/luci-static/argon/css/dark.css index 6a1cc074b..df4b0f1ba 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/css/dark.css +++ b/luci-theme-argon/htdocs/luci-static/argon/css/dark.css @@ -1,627 +1 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerryk - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Agron Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ -body { - background: #1e1e1e; - color: #cccccc; -} -.login-page .login-container .login-form { - background-color: #1e1e1e; -} -.login-page .login-container .login-form .brand { - color: #adb5bd; -} -.login-page .login-container .login-form .form-login .input-group::before { - color: #adb5bd; -} -.login-page .login-container .login-form .form-login .input-group input { - background-color: transparent !important; - color: #adb5bd; - border-bottom: #adb5bd 1px solid !important; - border-radius: 0 !important; - border-top: none !important; - border-left: none !important; - border-right: none !important; - box-shadow: none; -} -.login-page .login-container .login-form .form-login .cbi-button-apply { - background-image: linear-gradient(-135deg, #6c61ab 0%, #594ca9 100%); -} -.login-page .login-container .login-form .form-login .cbi-button-apply:hover, -.login-page .login-container .login-form .form-login .cbi-button-apply:focus { - background-image: linear-gradient(-135deg, #554c8a 0%, #483d8b 100%); -} -header::after { - background-color: #1e1e1e !important; -} -.main .main-left { - background-color: #333333 !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.15); -} -.main .main-left .sidenav-header .brand { - color: #ccc; -} -.main .main-left .nav .slide .slide-menu .active a { - color: #cccccc; -} -.main .main-left .nav .slide .slide-menu .active a::after { - background-color: #cccccc !important; -} -.main .main-left .nav .slide .slide-menu li a { - color: #cccccc; -} -.main .main-left .nav .slide .slide-menu li a:hover { - background: none !important; -} -.main .main-left .nav .slide .menu.active { - background-color: darkslateblue !important; - color: #cccccc !important; -} -.main .main-left .nav .slide .menu.active a::after { - background-color: #cccccc !important; -} -.main .main-left .nav li a { - color: #cccccc !important; -} -.main .main-left .nav li a:hover { - background-color: darkslateblue !important; - color: #cccccc !important; -} -.main .main-left::-webkit-scrollbar-thumb { - background-color: #252526 !important; -} -.main .main-left::-webkit-scrollbar-track { - background-color: #333; -} -.main .main-right { - background-color: #1e1e1e; -} -h2 { - color: #ccc; - background: #333333; -} -h3 { - color: #ccc; - border-bottom: 0; - background: #333333; -} -a:-webkit-any-link { - color: -webkit-link; - cursor: pointer; - color: darkslateblue; -} -input:-webkit-autofill { - background-color: #3c3c3c !important; -} -.cbi-value-field .cbi-input-apply, -.cbi-button-apply, -.cbi-button-edit { - color: #fff !important; - background-color: darkslateblue !important; - border-color: darkslateblue !important; -} -.cbi-section em { - color: #ccc; -} -header.bg-primary { - background-color: #1e1e1e !important; -} -.cbi-map-descr { - color: #ccc; -} -.cbi-section { - background: none; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); -} -.panel-title { - color: #ccc; - background-color: #333333; - border-bottom: 0px; -} -div > table > tbody > tr:nth-of-type(2n), -div > .table > .tr:nth-of-type(2n) { - background-color: #252526; -} -table > tbody > tr > td, -table > tfoot > tr > td, -table > thead > tr > td { - color: #ccc; -} -fieldset > table > tbody > tr:nth-of-type(2n) { - background-color: #252526; -} -table > tbody > tr > td, -table > tfoot > tr > td, -table > thead > tr > td { - border-top: 1px solid #252526; -} -#swaptotal > div > div, -#swapfree > div > div, -#memfree > div > div, -#membuff > div > div, -#conns > div > div, -#memtotal > div > div { - background-color: #32325d !important; -} -#swaptotal > div > div > div > small, -#swapfree > div > div > div > small, -#memfree > div > div > div > small, -#membuff > div > div > div > small, -#conns > div > div > div > small, -#memtotal > div > div > div > small { - color: #ccc !important; -} -.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; -} -.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - background-color: transparent !important; -} -.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div { - background-color: #32325d !important; -} -table > tbody > tr > th, -table > tfoot > tr > th, -table > thead > tr > th { - background-color: #252526; - border-bottom: black 1px solid !important; -} -tr > td, -tr > th, -.tr > .td, -.tr > .th, -.cbi-section-table-row::before, -#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { - border-top: 0; -} -.cbi-rowstyle-2 { - background-color: #1e1e1e; -} -.cbi-rowstyle-1 { - background-color: #252526; -} -.cbi-section > h3:first-child, -.panel-title, -h3 { - color: #ccc; - border-bottom: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} -h4 { - background-color: #1e1e1f; -} -.cbi-progressbar { - position: relative; - min-width: 170px; - height: 20px; - margin: 6px 0; - border: thin solid #999; - background: transparent; - border-radius: 0.2rem; - overflow: hidden; -} -.cbi-progressbar div { - background-color: #32325d !important; -} -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - background-color: #1e1e1f; -} -.cbi-button { - color: #ccc !important; - background-color: darkslateblue; -} -.cbi-section-node { - background: none; - border-radius: 0 0 0.375rem 0.375rem; - padding: 0rem; -} -abbr { - color: #5e72e4; -} -div > table > tbody > tr:nth-of-type(2n), -div > .table > .tbody > .tr:nth-of-type(2n) { - background-color: #252526; -} -#content_syslog { - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); -} -#syslog { - color: #ccc; - background-color: #1e1e1e; -} -#iwsvg, -#iwsvg2, -#bwsvg { - overflow: hidden; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - background-color: #1e1e1e !important; -} -.tabs { - background-color: #252526; -} -.tabs > li[class~="active"] > a { - color: #ccc; -} -.tabs > li[class~="active"], -.tabs > li:hover { - border-bottom: 0.18751rem solid darkslateblue; - color: #ccc; - background-color: #181819; -} -.cbi-tabmenu > li > a, -.tabs > li > a { - color: #ccc; -} -.cbi-tabmenu > li > a:hover, -.tabs > li > a:hover { - color: #ccc; -} -.cbi-tabmenu > li { - background: #2d2d2d; -} -.cbi-tabmenu li[class~="cbi-tab"] a { - color: #ccc; -} -.cbi-tabmenu > li:hover { - color: #ccc; - background: #2d2d2d; -} -.cbi-tabmenu > li[class~="cbi-tab"] { - background-color: #181819; -} -.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { - background-color: #252526; -} -.cbi-value-title { - color: #ccc; -} -select, -input { - color: #ccc; - background-color: transparent !important; - border: 1px solid #252526; - box-shadow: none; -} -select:not([multiple="multiple"]):focus, -input:focus { - border-color: darkslateblue !important; - outline: 0; -} -select { - background-color: #1e1e1e !important; -} -#cbi-dropbear h2, -#cbi-dropbear .cbi-map-descr, -#cbi-dropbear .cbi-map-descr abbr, -#cbi-rc h2, -#cbi-rc .cbi-map-descr, -#cbi-distfeedconf h2, -#cbi-distfeedconf .cbi-map-descr, -#cbi-customfeedconf h2, -#cbi-customfeedconf .cbi-map-descr, -#cbi-download h2, -#cbi-filelist h2 { - color: #ccc !important; -} -.cbi-value-field > ul > li .ifacebadge { - background-color: #3c3c3c; -} -.cbi-section-descr { - color: #ccc; -} -.cbi-input-textarea { - background-color: #1e1e1e; - color: #ccc; -} -.cbi-section-remove:nth-of-type(2n), -.cbi-section-node:nth-of-type(2n) { - background-color: #1e1e1e; -} -.node-system-packages > .main table tr td:nth-last-child(1) { - color: #ccc; -} -.cbi-section-node .cbi-value { - padding: 1rem 1rem 0.3rem 1rem; -} -.ifacebox { - background-color: none; - border: 1px solid #1e1e1e; -} -.ifacebox-head { - color: #666; -} -.ifacebox-body { - background-color: #333; -} -.zonebadge strong { - color: #333; -} -.zonebadge > .ifacebadge { - background-color: #3c3c3c; -} -div.cbi-value var, -td.cbi-value-field var { - color: #5e72e4; -} -#diag-rc-output > pre { - color: #ccc; - background-color: #1e1e1e; -} -.node-services-vssr .block { - background-color: #3c3c3c !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); -} -.node-services-vssr .block h4 { - color: #ccc !important; -} -.node-services-vssr .status-bar { - color: #ccc; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - background-color: #1e1e1e; -} -.node-services-vssr .cbi-section-table-row { - color: #ccc; - background-color: #3c3c3c !important; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.35); -} -.node-services-vssr .cbi-section-table-row.fast { - background: darkslateblue !important; - color: #fff; -} -.node-services-vssr .ssr-button { - color: #ccc; -} -.node-services-vssr .incon:nth-child(2) { - border-right: #1e1e1e 1px solid; -} -#xhr_poll_status > .label.success { - color: #ccc !important; - background-color: darkolivegreen !important; -} -.notice { - background-color: darkslateblue !important; -} -.cbi-input-find, -.cbi-input-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-find, -.cbi-input-reload, -.cbi-button-reload { - color: #fff !important; - background: darkolivegreen !important; - border-color: darkolivegreen !important; -} -.cbi-button-reset, -.cbi-input-remove { - color: #fff !important; - background-color: darkorange !important; - border-color: darkorange !important; -} -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit.important, -.cbi-button-apply.important, -.cbi-button-reload.important, -.cbi-button-action.important { - border: 1px darkslateblue solid !important; -} -.btn[value="Dismiss"], -.cbi-button[value="Terminate"], -.cbi-button[value="Reset"], -.cbi-button[value="Disabled"], -.cbi-button[onclick^="iface_reconnect"], -.cbi-button[onclick="handleReset(event)"], -.cbi-button-neutral[value="Disable"] { - font-weight: normal; - color: #fff; - border: thin solid darkorange!important; - background-color: darkorange!important; -} -fieldset[id^="cbi-apply-"] { - background-color: #333333; -} -#detail-bubble > div { - border: 1px solid #ccc; - border-radius: 2px; - padding: 5px; - background: #252525; -} -.ifacebox-head.active { - background-color: #32325d !important; -} -header .fill .status span[data-style="active"] { - color: #ccc !important; - background-color: darkolivegreen !important; -} -#cbi-wireless .td, -#cbi-network .tr:first-child > .td, -.table[width="100%"] > .tr:first-child > .td, -[data-page="admin-network-diagnostics"] .tr > .td, -.tr.table-titles > .th, -.tr.cbi-section-table-titles > .th { - background-color: #252526; - border-bottom: black 1px solid !important; -} -.network-status-table .ifacebox-body .ifacebadge { - background-color: #252526; - border-bottom: 0; - box-shadow: none; -} -td > .ifacebadge, -.td > .ifacebadge { - background-color: darkslateblue; - border: 0; -} -.btn.danger, -.cbi-section-remove > .cbi-button, -.cbi-button-remove, -.cbi-button-reset, -.cbi-button-negative, -.cbi-button[value="Stop"], -.cbi-button[value="Kill"], -.cbi-button[onclick="reboot(this)"], -.cbi-button-neutral[value="Restart"] { - border: thin solid darkorange !important; - background-color: darkorange !important; -} -.cbi-section, -.cbi-section-error, -#iptables, -.Firewall form, -#cbi-network > .cbi-section-node, -#cbi-wireless > .cbi-section-node, -#cbi-wireless > #wifi_assoclist_table, -[data-tab-title], -[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), -[data-page="admin-system-opkg"] #maincontent > .container { - background: #1e1e1e !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); -} -div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { - background: transparent !important; -} -[data-page="admin-system-admin"] .cbi-map h2, -[data-page="admin-system-admin-password"] .cbi-map h2, -[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, -[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { - color: #ccc; -} -[data-page="admin-system-flash"] .modal label > input[type="checkbox"] { - top: -0.35rem; -} -[data-page="admin-system-flash"] .modal .btn { - white-space: normal !important; - background-color: darkseagreen; -} -[data-page="admin-system-flash"] .modal .alert-message { - background-color: transparent !important; -} -[data-page="admin-system-flash"] .modal .danger { - border: thin solid darkorange !important; - background-color: darkorange !important; -} -.cbi-value input[type="password"] + .cbi-button-neutral { - background-color: darkslateblue !important; -} -.btn, -button, -select, -input, -.cbi-dropdown { - border: 1px solid #3c3c3c !important; -} -.cbi-dropdown .preview { - color: #ccc; -} -.cbi-section-table-row { - background-color: #1e1e1e !important; -} -.modal { - background-color: #1e1e1e; -} -.cbi-button-positive { - color: #fff !important; - background-color: darkolivegreen !important; -} -[data-page="admin-system-flash"] legend { - color: #ccc; -} -.logout:before { - color: #adb5bd !important; -} -.cbi-dropdown[open] { - border-color: darkslateblue !important; -} -.cbi-dropdown[open] > ul.dropdown { - background: #252526 !important; - color: #ccc !important; - box-shadow: none; - border: 1px solid #3c3c3c !important; -} -.cbi-dropdown[open] > ul.dropdown li { - color: #ccc; - border-bottom: 1px solid #3c3c3c !important; -} -.cbi-dropdown[open] > ul.dropdown > li[selected] { - background-color: darkslateblue !important; - border-bottom: 1px solid #3c3c3c !important; -} -.cbi-dropdown[open] > ul.dropdown > li.focus { - background: darkslateblue; - outline: none; -} -.ifacebadge { - background-color: #333333; -} -.cbi-dynlist > .item > span { - border: 1px solid #3c3c3c !important; -} -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit, -.cbi-button-apply, -.cbi-button-reload, -.cbi-button-action, -.cbi-button[value="Submit"], -.cbi-button[value="Upload"], -.cbi-button[value$="Apply"], -.cbi-button[onclick="addKey(event)"] { - background: darkslateblue !important; -} -.btn.primary, -.cbi-page-actions .cbi-button-save, -.cbi-page-actions .cbi-button-apply + .cbi-button-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-positive, -.cbi-button-link, -.cbi-button[value="Enable"], -.cbi-button[value="Scan"], -.cbi-button[value^="Back"], -.cbi-button-neutral[onclick="handleConfig(event)"] { - background: darkslateblue; -} -[data-page="admin-system-opkg"] h2 { - color: #ccc !important; -} -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius-dark)); - backdrop-filter: blur(var(--blur-radius-dark)); - background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); - } -} -@media screen and (max-width: 480px) { - .node-status-iptables > .main div > .cbi-map > form { - background-color: #1e1e1e; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - } -} +body{background:#1e1e1e;color:#cccccc}.login-page .login-container .login-form{background-color:#1e1e1e;-webkit-backdrop-filter:blur(var(--blur-radius-dark));backdrop-filter:blur(var(--blur-radius-dark));background-color:rgba(0, 0, 0, var(--blur-opacity-dark))}.login-page .login-container .login-form .brand{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group::before{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group input{background-color:transparent !important;color:#adb5bd;border-bottom:#adb5bd 1px solid !important;border-radius:0 !important;border-top:none !important;border-left:none !important;border-right:none !important;box-shadow:none}.login-page .login-container .login-form .form-login .cbi-button-apply{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.login-page .login-container .login-form .form-login .cbi-button-apply:hover,.login-page .login-container .login-form .form-login .cbi-button-apply:focus{opacity:.9}header::after{background-color:#1e1e1e !important}.main .main-left{background-color:#333333 !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.15)}.main .main-left .sidenav-header .brand{color:#cccccc}.main .main-left .nav .slide .slide-menu .active a{color:#cccccc}.main .main-left .nav .slide .slide-menu .active a::after{background-color:#cccccc !important}.main .main-left .nav .slide .slide-menu .active::after{background-color:var(--dark-primary) !important}.main .main-left .nav .slide .slide-menu li a{color:#cccccc}.main .main-left .nav .slide .slide-menu li a:hover{background:none !important}.main .main-left .nav .slide .slide-menu li::after{background-color:var(--dark-primary) !important}.main .main-left .nav .slide .menu.active{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#ffffff !important}.main .main-left .nav .slide .menu.active a::after{background-color:#ffffff !important}.main .main-left .nav li a{color:#cccccc !important}.main .main-left .nav li a:hover{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#ffffff !important}.main .main-left::-webkit-scrollbar-thumb{background-color:#252526 !important}.main .main-left::-webkit-scrollbar-track{background-color:#333}.main .main-right{background-color:#1e1e1e}h2{color:#ccc;background:#333333}h3{color:#ccc;border-bottom:0;background:#333333}h4{color:#8C6900}abbr{color:var(--dark-primary) !important}a:link,a:visited,a:active{color:#a5b2ff}input:-webkit-autofill{background-color:#3c3c3c !important}#channel_graph{background-color:transparent !important}.cbi-value-field .cbi-input-apply,.cbi-button-apply,.cbi-button-edit{color:#fff !important;background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-color:#483d8b !important;border-color:var(--dark-primary) !important}.cbi-section em{color:#ccc}header.bg-primary{background-color:#1e1e1e !important}.cbi-map-descr{color:#ccc}.cbi-section{background:none;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.panel-title{color:#ccc;background-color:#333333}div>table>tbody>tr:nth-of-type(2n),div>.table>.tr:nth-of-type(2n){background-color:#252526}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{color:#cccccc}fieldset>table>tbody>tr:nth-of-type(2n){background-color:#252526}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{border-top:1px solid #252526}#swaptotal>div>div,#swapfree>div>div,#memfree>div>div,#membuff>div>div,#conns>div>div,#memtotal>div>div{background-color:var(--dark-primary) !important}#swaptotal>div>div>div>small,#swapfree>div>div>div>small,#memfree>div>div>div>small,#membuff>div>div>div>small,#conns>div>div>div>small,#memtotal>div>div>div>small{color:#ccc !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last{line-height:1.8em}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"]{border:1px solid #999999 !important;background-color:transparent !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div{background-color:#ba8b00 !important}table>tbody>tr>th,table>tfoot>tr>th,table>thead>tr>th{background-color:#252526;border-bottom:black 1px solid !important}tr>td,tr>th,.tr>.td,.tr>.th,.cbi-section-table-row::before,#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2){border-top:0}.cbi-rowstyle-2{background-color:#1e1e1e}.cbi-rowstyle-1{background-color:#252526}.cbi-rowstyle-2 .cbi-button-up,.cbi-rowstyle-2 .cbi-button-down,body:not(.Interfaces) .cbi-rowstyle-2:first-child{background-color:#666 !important}.cbi-section>h3:first-child,.panel-title,h3{color:#ccc}h4{background-color:#1e1e1f}.cbi-progressbar{background:#282a2c}.cbi-progressbar div{background-color:var(--dark-primary) !important}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{background-color:#1e1e1f}.cbi-button{color:#ffffff !important;background-color:#483d8b;background-color:var(--dark-primary)}.cbi-section-node{background:none}abbr{color:#5e72e4}div>table>tbody>tr:nth-of-type(2n),div>.table>.tbody>.tr:nth-of-type(2n){background-color:#252526}#content_syslog{box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}#syslog{color:#ccc;background-color:#1e1e1e}#iwsvg,#iwsvg2,#bwsvg{overflow:hidden;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e !important}.tabs{background-color:#252526}.tabs li[class~="active"],.tabs li:hover{cursor:pointer;color:#ccc !important}.tabs li[class~="active"] a,.tabs li:hover a{color:#ccc !important}.tabs>li[class~="active"]>a{color:#ccc}.tabs>li[class~="active"],.tabs>li:hover{border-bottom:.18751rem solid #483d8b;border-bottom:.18751rem solid var(--dark-primary);color:var(--dark-primary) !important;background-color:#181819}.cbi-tabmenu>li>a,.tabs>li>a{color:#ccc}.cbi-tabmenu>li>a:hover,.tabs>li>a:hover{color:#ccc}.cbi-tabmenu>li{background:#2d2d2d}.cbi-tabmenu li[class~="cbi-tab"] a{color:#ccc}.cbi-tabmenu>li:hover{color:#ccc;background:#2d2d2d;border-bottom:.18751rem solid var(--dark-primary) !important}.cbi-tabmenu>li[class~="cbi-tab"]{background-color:#181819;border-bottom:.18751rem solid var(--dark-primary) !important}.cbi-tabcontainer>.cbi-value:nth-of-type(2n){background-color:#252526}.cbi-value-title{color:#ccc}select,input{color:#ccc;background-color:transparent !important;border:1px solid #252526;box-shadow:none}select:not([multiple="multiple"]):focus,input:focus{border-color:#483d8b !important;border-color:var(--dark-primary) !important;outline:0}select:not([multiple="multiple"]):focus,input:not(.cbi-button):focus,.cbi-dropdown:focus{border-color:#5e72e4;border-color:var(--dark-primary) !important}select{background-color:#1e1e1e !important}#cbi-dropbear h2,#cbi-dropbear .cbi-map-descr,#cbi-dropbear .cbi-map-descr abbr,#cbi-rc h2,#cbi-rc .cbi-map-descr,#cbi-distfeedconf h2,#cbi-distfeedconf .cbi-map-descr,#cbi-customfeedconf h2,#cbi-customfeedconf .cbi-map-descr,#cbi-download h2,#cbi-filelist h2{color:#ccc !important}.cbi-value-field>ul>li .ifacebadge{background-color:#3c3c3c}.cbi-section-descr{color:#ccc}.cbi-input-textarea{background-color:#1e1e1e;color:#ccc;border:1px solid #3c3c3c !important}textarea:focus-visible{border:1px solid var(--dark-primary)}.cbi-section-remove:nth-of-type(2n),.cbi-section-node:nth-of-type(2n){background-color:#1e1e1e}.node-system-packages>.main table tr td:nth-last-child(1){color:#ccc}.cbi-tooltip{background-color:var(--primary);color:#fff}.ifacebox{background-color:transparent !important;border:1px solid #1e1e1e}.ifacebox-head{color:#ccc;background:#666}.ifacebox-body{background-color:#333}.zonebadge strong{color:#333}.zonebadge>.ifacebadge{background-color:#3c3c3c}div.cbi-value var,td.cbi-value-field var{color:#5e72e4}#diag-rc-output>pre{color:#ccc;background-color:#1e1e1e}.node-services-vssr .block{background-color:#3c3c3c !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.node-services-vssr .block h4{color:#ccc !important}.node-services-vssr .status-bar{color:#ccc;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e}.node-services-vssr .cbi-section-table-row{color:#ccc;background-color:#3c3c3c !important;box-shadow:0 0 5px 0 rgba(0,0,0,0.35)}.node-services-vssr .cbi-section-table-row.fast{background:#483d8b !important;background:var(--dark-primary) !important;color:#fff}.node-services-vssr .ssr-button{color:#ccc}.node-services-vssr .incon:nth-child(2){border-right:#1e1e1e 1px solid}#xhr_poll_status>.label.success{color:#ccc !important;background-color:darkolivegreen !important}.notice{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.cbi-input-find,.cbi-input-save,.cbi-button-add,.cbi-button-save,.cbi-button-find,.cbi-input-reload,.cbi-button-reload{color:#fff !important;background:darkolivegreen !important;border-color:darkolivegreen !important}.cbi-button-reset,.cbi-input-remove{color:#fff !important;background-color:darkorange !important;border-color:darkorange !important}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit.important,.cbi-button-apply.important,.cbi-button-reload.important,.cbi-button-action.important{border:1px #483d8b solid !important;border:1px var(--dark-primary) solid !important}.btn[value="Dismiss"],.cbi-button[value="Terminate"],.cbi-button[value="Reset"],.cbi-button[value="Disabled"],.cbi-button[onclick^="iface_reconnect"],.cbi-button[onclick="handleReset(event)"],.cbi-button-neutral[value="Disable"]{color:#fff;border:thin solid darkorange !important;background-color:darkorange !important}fieldset[id^="cbi-apply-"]{background-color:#333333}#detail-bubble>div{border:1px solid #ccc;background:#252525}.ifacebox-head.active{background-color:var(--dark-primary) !important}header .fill .status span[data-style="active"]{color:#ccc !important;background-color:darkolivegreen !important}#cbi-wireless .td,#cbi-network .tr:first-child>.td,.table[width="100%"]>.tr:first-child>.td,[data-page="admin-network-diagnostics"] .tr>.td,.tr.table-titles>.th,.tr.cbi-section-table-titles>.th{background-color:#252526;border-bottom:black 1px solid !important}.network-status-table .ifacebox-body .ifacebadge{background-color:#252526;border-bottom:0;box-shadow:none}td>.ifacebadge,.td>.ifacebadge{color:#fff;background-color:#483d8b;background-color:var(--dark-primary);border:0}.alert,.alert-message{background-color:#333}.alert-message.warning{background-color:#986400 !important}.alert.error,.alert-message.error{background-color:#784f00}.alert h4,.alert-message h4{background-color:#784f00;color:#ffbf00}.alert-message [class="btn"]{background-color:#777777;color:#ccc}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>ins{border-color:#00ad00;background-color:#688668}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>del{border-color:#c60000;background-color:#896565}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var{background-color:#333;border-color:#666}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var ins{background-color:#688668}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var del{background-color:#896565}.uci-dialog .cbi-section .uci-change-list>var{background-color:#333;border-color:#666}.uci-dialog .cbi-section .uci-change-list>var del{background-color:#896565}.uci-dialog .cbi-section .uci-change-list>var ins{background-color:#688668}.uci-dialog .cbi-section .uci-change-list>ins{border-color:#00ad00;background-color:#688668}.uci-dialog .cbi-section .uci-change-list>del{border-color:#c60000;background-color:#896565}.uci-dialog .cbi-section .uci-change-list+.right .btn{color:#ccc}.uci-dialog .cbi-section .uci-change-list+.right .cbi-button{border:1px solid #3c3c3c !important}.btn.danger,.cbi-section-remove>.cbi-button,.cbi-button-remove,.cbi-button-reset,.cbi-button-negative,.cbi-button[value="Stop"],.cbi-button[value="Kill"],.cbi-button[onclick="reboot(this)"],.cbi-button-neutral[value="Restart"]{border:thin solid darkorange !important;background-color:darkorange !important}.cbi-section,.cbi-section-error,#iptables,.Firewall form,#cbi-network>.cbi-section-node,#cbi-wireless>.cbi-section-node,#cbi-wireless>#wifi_assoclist_table,[data-tab-title],[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),[data-page="admin-system-opkg"] #maincontent>.container{background:#1e1e1e !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}div[style="width:100%;height:300px;border:1px solid #000;background:#fff"]{background:transparent !important}[data-page="admin-system-admin"] .cbi-map h2,[data-page="admin-system-admin-password"] .cbi-map h2,[data-page="admin-system-admin"] .cbi-map .cbi-map-descr,[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr{color:#ccc}[data-page="admin-system-flash"] .modal label>input[type="checkbox"]{top:-0.35rem}[data-page="admin-system-flash"] .modal .btn{white-space:normal !important;background-color:darkseagreen}[data-page="admin-system-flash"] .modal .alert-message{background-color:transparent !important}[data-page="admin-system-flash"] .modal .danger{border:thin solid darkorange !important;background-color:darkorange !important}.cbi-value input[type="password"]+.cbi-button-neutral{background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-color:var(--dark-primary) !important}.btn,button,select,input,.cbi-dropdown{border:1px solid #3c3c3c !important}.cbi-dropdown .preview{color:#ccc}.cbi-section-table-row{background-color:#1e1e1e !important}.modal{background-color:#1e1e1e}.cbi-button-positive{color:#fff !important;background-color:darkolivegreen !important}[data-page="admin-system-flash"] legend{color:#ccc}.logout:before{color:#adb5bd !important}.cbi-dropdown[open]{border-color:#483d8b !important;border-color:var(--dark-primary) !important}.cbi-dropdown[open]>ul.dropdown{background:#252526 !important;color:#ffffff !important;box-shadow:none;border:1px solid #3c3c3c !important}.cbi-dropdown[open]>ul.dropdown li{color:#ffffff;border-bottom:1px solid #3c3c3c !important}.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-bottom:1px solid #3c3c3c !important}.cbi-dropdown[open]>ul.dropdown>li.focus{background:#483d8b;background:var(--dark-primary);outline:none}.ifacebadge{background-color:#333333}.cbi-dynlist>.item>span{border:1px solid #3c3c3c !important}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit,.cbi-button-apply,.cbi-button-reload,.cbi-button-action,.cbi-button[value="Submit"],.cbi-button[value="Upload"],.cbi-button[value$="Apply"],.cbi-button[onclick="addKey(event)"]{background:#483d8b !important;background:var(--dark-primary) !important;border-color:var(--dark-primary) !important}.btn.primary,.cbi-page-actions .cbi-button-save,.cbi-page-actions .cbi-button-apply+.cbi-button-save,.cbi-button-add,.cbi-button-save,.cbi-button-positive,.cbi-button-link,.cbi-button[value="Enable"],.cbi-button[value="Scan"],.cbi-button[value^="Back"],.cbi-button-neutral[onclick="handleConfig(event)"]{background:#483d8b;background:var(--dark-primary)}[data-page="admin-system-opkg"] h2{color:#ccc !important}[data-page="admin-system-startup"] textarea{color:#ccc;background-color:transparent}[data-page="admin-system-startup"] textarea:focus-visible{border:1px solid var(--dark-primary)}[data-page="admin-network-firewall-custom"] #view p textarea,[data-page="admin-status-routes"] #view p textarea,[data-page="admin-system-crontab"] #view p textarea{color:#ccc;background-color:transparent}#view>.spinning{background:#333333 !important;box-shadow:0 4px 8px rgba(0,0,0,0.03) !important}@media screen and (min-width:600px){::-webkit-scrollbar-thumb{background:var(--dark-primary)}::-webkit-scrollbar-thumb:hover{background:var(--dark-primary)}::-webkit-scrollbar-thumb:active{background:var(--dark-primary)}}@media screen and (max-width:480px){.node-status-iptables>.main div>.cbi-map>form{background-color:#1e1e1e;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard{color:#ccc !important}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard h3{color:#ccc}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard hr{border-top:1px solid #fff}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard .dashboard-bg{background-color:#333333}[data-page="admin-dashboard"] .main-right>#maincontent .router-status-info .title img,[data-page="admin-dashboard"] .main-right>#maincontent .lan-info .title img,[data-page="admin-dashboard"] .main-right>#maincontent .wifi-info .title img{filter:invert(90%)}[data-page="admin-dashboard"] .main-right>#maincontent tr{border-top:thin solid #4d4d4d}[data-page="admin-dashboard"] .main-right>#maincontent tr:last-child{border-bottom:thin solid #4d4d4d}[data-page="admin-system-fileassistant"] .fb-container .panel-container{border-bottom-color:#3c3c3c !important}[data-page="admin-system-fileassistant"] .fb-container td[class$="-icon"]::before{filter:invert(.7)}[data-page^="admin-services-openclash"] .cbi-tabmenu::-webkit-scrollbar-thumb{background-color:#5b5b5b}[data-page^="admin-services-openclash"] .cbi-tabmenu::-webkit-scrollbar-track{background-color:rgba(60,60,60,0.75)}[data-page^="admin-services-openclash"] #tab{border-color:#3c3c3c}[data-page^="admin-services-openclash"] #diag-rc-output>pre,[data-page^="admin-services-openclash"] #dns-rc-output>pre{color:#ccc;border:1px solid #3c3c3c !important;background-color:#1e1e1e}[data-page^="admin-services-openclash"] img[src$="arrow-clockwise-light.svg"],[data-page^="admin-services-openclash"] img[src$="wrench-light.svg"],[data-page^="admin-services-openclash"] img[src$="eye-light.svg"]{filter:invert(.9)}[data-page="admin-network-diagnostics"] .cbi-section{background:#252526 !important}[data-page="admin-network-diagnostics"] textarea{background:transparent;border-radius:.25rem;color:#ccc;border:1px solid #3c3c3c !important}[data-page="admin-network-diagnostics"] .tr>.td{background-color:#252526 !important}[data-page="admin-network-network"] .ifacebox-head[style*="--zone-color-rgb: 144, 240, 144"]{background-color:#497e49 !important;color:#ccc !important}[data-page="admin-network-network"] .ifacebox-head[style*="--zone-color-rgb: 240, 144, 144;"]{background-color:#9c4f4f !important;color:#ccc !important}[data-page="admin-network-network"] .ifacebox-head[style*="--zone-color-rgb: 238, 238, 238;"]{background-color:#666 !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:240, 144, 144;"]{--zone-color-rgb:156, 79, 79 !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] strong{color:#ccc !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:238, 238, 238;"]{--zone-color-rgb:112, 112, 112 !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] em{color:#ccc !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule>table>.cbi-section-table-row[data-title]::before{background-color:#252526 !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"],[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"]{--zone-color-rgb:156, 79, 79 !important;color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] strong,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] strong{color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"],[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"]{--zone-color-rgb:73, 126, 73 !important;color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"] strong,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"] strong{color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"],[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"]{--zone-color-rgb:112, 112, 112 !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong{color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong+span,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong+span{color:#ccc !important}.btn{background-color:#707070;color:#fff} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png b/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png index 7c17009d3..7bfe4e5fd 100644 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png and b/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png index 5308d66b7..8d523df8b 100644 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png and b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png index f18dfa49c..4c80656de 100644 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png and b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png index bb3e24233..07753022e 100644 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png and b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/arrow.svg b/luci-theme-argon/htdocs/luci-static/argon/icon/arrow.svg index be864c5ac..a20e7987d 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/icon/arrow.svg +++ b/luci-theme-argon/htdocs/luci-static/argon/icon/arrow.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png new file mode 100644 index 000000000..88bf32978 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png new file mode 100644 index 000000000..d524df3ea Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png new file mode 100644 index 000000000..6c8e88740 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json b/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json index 2817bc813..d4b84f159 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json +++ b/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json @@ -1,41 +1,41 @@ { - "name": "Openwrt", - "icons": [ - { - "src": "\/android-icon-36x36.png", - "sizes": "36x36", - "type": "image\/png", - "density": "0.75" - }, - { - "src": "\/android-icon-48x48.png", - "sizes": "48x48", - "type": "image\/png", - "density": "1.0" - }, - { - "src": "\/android-icon-72x72.png", - "sizes": "72x72", - "type": "image\/png", - "density": "1.5" - }, - { - "src": "\/android-icon-96x96.png", - "sizes": "96x96", - "type": "image\/png", - "density": "2.0" - }, - { - "src": "\/android-icon-144x144.png", - "sizes": "144x144", - "type": "image\/png", - "density": "3.0" - }, - { - "src": "\/android-icon-192x192.png", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ] + "name": "Openwrt", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] } \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png b/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png index 5308d66b7..8d523df8b 100644 Binary files a/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png and b/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/spinner.svg b/luci-theme-argon/htdocs/luci-static/argon/icon/spinner.svg index 6ddd3b3ed..caef4b7ac 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/icon/spinner.svg +++ b/luci-theme-argon/htdocs/luci-static/argon/icon/spinner.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg b/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg index 654e2fe24..0c8aea07d 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg +++ b/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg @@ -1,61 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg b/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg index f01ad5c79..ef84c3c6e 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg +++ b/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg b/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg index 0598d584e..5467d4d57 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg +++ b/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js b/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js index d467083b6..b0614034a 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js +++ b/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js @@ -1,2 +1,2 @@ /*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-material: - * Copyright 2015 Lutty Yang - * https://github.com/LuttyYang/luci-theme-material/ - * - * Agron Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * Font generate by Icomoon - * - * Licensed to the public under the Apache License 2.0 - */ - -document.addEventListener('luci-loaded', function(ev) { -(function ($) { - - /** - * trim text, Remove spaces, wrap - * @param text - * @returns {string} - */ - function trimText(text) { - return text.replace(/[ \t\n\r]+/g, " "); - } - - var lastNode = undefined; - var mainNodeName = undefined; - - var nodeUrl = ""; - (function(node){ - var luciLocation; - if (node[0] == "admin"){ - luciLocation = [node[1], node[2]]; - }else{ - luciLocation = node; - } - - for(var i in luciLocation){ - nodeUrl += luciLocation[i]; - if (i != luciLocation.length - 1){ - nodeUrl += "/"; - } - } - })(luciLocation); - - /** - * get the current node by Burl (primary) - * @returns {boolean} success? - */ - function getCurrentNodeByUrl() { - var ret = false; - if (!$('body').hasClass('logged-in')) { - luciLocation = ["Main", "Login"]; - return true; - } - - $(".main > .main-left > .nav > .slide > .menu").each(function () { - var ulNode = $(this); - ulNode.next().find("a").each(function () { - var that = $(this); - var href = that.attr("href"); - - if (href.indexOf(nodeUrl) != -1) { - ulNode.click(); - ulNode.next(".slide-menu").stop(true, true); - lastNode = that.parent(); - lastNode.addClass("active"); - ret = true; - return true; - } - }); - }); - return ret; - } - - /** - * menu click - */ - $(".main > .main-left > .nav > .slide > .menu").click(function () { - var ul = $(this).next(".slide-menu"); - var menu = $(this); - if (!ul.is(":visible")) { - menu.addClass("active"); - ul.addClass("active"); - ul.stop(true).slideDown("fast"); - } else { - ul.stop(true).slideUp("fast", function () { - menu.removeClass("active"); - ul.removeClass("active"); - }); - } - return false; - }); - - /** - * hook menu click and add the hash - */ - $(".main > .main-left > .nav > .slide > .slide-menu > li > a").click(function () { - if (lastNode != undefined) lastNode.removeClass("active"); - $(this).parent().addClass("active"); - return true; - }); - - /** - * fix menu click - */ - $(".main > .main-left > .nav > .slide > .slide-menu > li").click(function () { - if (lastNode != undefined) lastNode.removeClass("active"); - $(this).addClass("active"); - window.location = $($(this).find("a")[0]).attr("href"); - return false; - }); - - /** - * get current node and open it - */ - if (getCurrentNodeByUrl()) { - mainNodeName = "node-" + luciLocation[0] + "-" + luciLocation[1]; - mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g, "_").toLowerCase(); - $("body").addClass(mainNodeName); - } - - /** - * Sidebar expand - */ - var showSide = false; - $(".showSide").click(function () { - if (showSide) { - $(".darkMask").stop(true).fadeOut("fast"); - $(".main-left").width(0); - $(".main-right").css("overflow-y", "visible"); - showSide = false; - } else { - $(".darkMask").stop(true).fadeIn("fast"); - $(".main-left").width("13rem") - $(".main-right").css("overflow-y", "hidden"); - showSide = true; - } - }); - - $(".darkMask").click(function () { - if (showSide) { - showSide = false; - $(".darkMask").stop(true).fadeOut("fast"); - $(".main-left").width(0); - $(".main-right").css("overflow-y", "visible"); - } - }); - - $(window).resize(function () { - if ($(window).width() > 921) { - $(".main-left").css("width", ""); - $(".darkMask").stop(true); - $(".darkMask").css("display", "none"); - showSide = false; - } - }); - - /** - * fix legend position - */ - $("legend").each(function () { - var that = $(this); - that.after("" + that.text() + ""); - }); - - $(".cbi-section-table-titles, .cbi-section-table-descr, .cbi-section-descr").each(function () { - var that = $(this); - if (that.text().trim() == ""){ - that.css("display", "none"); - } - }); - - $(".main-right").focus(); - $(".main-right").blur(); - $("input").attr("size", "0"); - $(".cbi-button-up").val("__"); - $(".cbi-button-down").val("__"); - $(".slide > a").removeAttr("href"); - - if (mainNodeName != undefined) { - console.log(mainNodeName); - switch (mainNodeName) { - case "node-status-system_log": - case "node-status-kernel_log": - $("#syslog").focus(function () { - $("#syslog").blur(); - $(".main-right").focus(); - $(".main-right").blur(); - }); - break; - case "node-status-firewall": - var button = $(".node-status-firewall > .main fieldset li > a"); - button.addClass("cbi-button cbi-button-reset a-to-btn"); - break; - case "node-system-reboot": - var button = $(".node-system-reboot > .main > .main-right p > a"); - button.addClass("cbi-button cbi-input-reset a-to-btn"); - break; - } - } - -})(jQuery); -}); diff --git a/luci-theme-argon/htdocs/luci-static/argon/less/cascade.less b/luci-theme-argon/htdocs/luci-static/argon/less/cascade.less deleted file mode 100644 index 96e3864be..000000000 --- a/luci-theme-argon/htdocs/luci-static/argon/less/cascade.less +++ /dev/null @@ -1,4678 +0,0 @@ -// out: ../css/cascade.css, compress: false , sourceMap: false -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerrykuku - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-material: - * Copyright 2015 Lutty Yang - * https://github.com/LuttyYang/luci-theme-material/ - * - * Agron Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * Font generate by Icomoon - * - * Licensed to the public under the Apache License 2.0 - */ - -/* - * Include base and custom css - */ - -@import url("fonts.css?v=3"); -@import url("pure-min.css?v=1"); - -:root { - --main-color: #09c; - --header-bg: #09c; - --header-color: #fff; - --bar-bg: #5e72e4; - --menu-bg-color: #fff; - --menu-color: #5f6368; - --menu-color-hover: #202124; - --main-menu-color: #202124; - --submenu-bg-hover: #d4d4d4; - --submenu-bg-hover-active: #09c; - - --blue: #5e72e4; - --indigo: #5603ad; - --purple: #8965e0; - --pink: #f3a4b5; - --red: #f5365c; - --orange: #fb6340; - --yellow: #ffd600; - --green: #2dce89; - --teal: #11cdef; - --cyan: #2bffc6; - --white: #fff; - --gray: #8898aa; - --gray-dark: #32325d; - --light: #ced4da; - --lighter: #e9ecef; - --primary: #5e72e4; - --secondary: #f7fafc; - --success: #2dce89; - --info: #11cdef; - --warning: #fb6340; - --danger: #f5365c; - --light: #adb5bd; - --dark: #212529; - --default: #172b4d; - --white: #fff; - --neutral: #fff; - --darker: black; - --background-color: #f4f5f7; - --login-form-bg-color: rgba(244, 245, 247, 0.8); - --breakpoint-xs: 0; - --breakpoint-sm: 576px; - --breakpoint-md: 768px; - --breakpoint-lg: 992px; - --breakpoint-xl: 1200px; - --blur-radius: 10px; - --blur-opacity: 0.5; - --blur-radius-dark: 10px; - --blur-opacity-dark: 0.5; - --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; - --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; -} - -html, -body { - margin: 0px; - padding: 0px; - height: 100%; - font-size: 16px; - font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; - font-family: var(--font-family-sans-serif); -} - -html { - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -body { - font-size: 0.875rem; - background-color: #f4f5f7; - background-color: var(--background-color); - color: #32325d; - color: var(--gray-dark); -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -::selection { - background-color: #5e72e4; - background-color: var(--primary); - color: #ffffff; - color: var(--white); -} - -a:link, -a:visited, -a:active { - color: #5e72e4; - color: var(--primary); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -li { - list-style-type: none; -} - - - -.table { - position: relative; - display: table; -} - -.tr { - display: table-row; -} - -.thead { - display: table-header-group; -} - -.tbody { - display: table-row-group; -} - -.tfoot { - display: table-footer-group; -} - -.td, -.th { - line-height: normal; - display: table-cell; - padding: .5em; - text-align: center; - vertical-align: middle; -} - -.th { - font-weight: bold; - white-space: nowrap; -} - -.tr.placeholder { - height: 4em; -} - -.tr.placeholder>.td { - line-height: 3; - position: absolute; - right: 0; - bottom: 0; - left: 0; - padding: 0.4rem 0 !important; - text-align: center !important; - background: inherit; -} - -.td[width="33%"] { - padding: 1.1em 1.5rem; -} - -.table[width="33%"], -.th[width="33%"], -.td[width="33%"] { - width: 33%; -} - -.table[width="100%"], -.th[width="100%"], -.td[width="100%"] { - width: 100%; -} - -.col-1 { - flex: 1 1 30px !important; -} - -.col-2 { - flex: 2 2 60px !important; -} - -.col-3 { - flex: 3 3 90px !important; -} - -.col-4 { - flex: 4 4 120px !important; -} - -.col-5 { - flex: 5 5 150px !important; -} - -.col-6 { - flex: 6 6 180px !important; -} - -.col-7 { - flex: 7 7 210px !important; -} - -.col-8 { - flex: 8 8 240px !important; -} - -.col-9 { - flex: 9 9 270px !important; -} - -.col-10 { - flex: 10 10 300px !important; -} - -* { - box-sizing: border-box; - margin: 0; - padding: 0; - -} - -.h1, -.h2, -.h3, -.h4, -.h5, -.h6, -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: inherit; - font-weight: normal; - line-height: 1.1 !important; - color: inherit; -} - - - -select { - padding: .36rem .8rem; - color: #555; - border: thin solid #ccc; - background-color: #fff; - background-image: none; -} - -.btn, -button, -select, -input, -.cbi-dropdown { - line-height: 1.5rem; - padding: .5rem .75rem; - margin: 0.25rem 0.1rem; - color: #8898aa; - border: 1px solid #dee2e6; - - border-radius: .25rem; - outline: 0; - background-image: none; - box-shadow: none; - transition: box-shadow .15s ease; -} - -select, -.cbi-dropdown { - width: inherit; - cursor: default; -} - -select:not([multiple="multiple"]):focus, -input:not(.cbi-button):focus, -.cbi-dropdown:focus { - border-color: #5e72e4; - border-color: var(--primary); - box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, .1); -} - -.cbi-dropdown, -select[multiple="multiple"] { - height: auto; -} - -pre { - overflow: auto; -} - -code { - font-size: 1rem; - font-size-adjust: .35; - padding: 1px 3px; - color: #101010; - border-radius: 2px; - background: #ddd; -} - -abbr { - cursor: help; - text-decoration: underline; - color: #5e72e4; -} - -hr { - margin: 1rem 0; - opacity: .1; - border-color: #eee; -} - - - - -/*********************** -* -* Login Page -* -***************************/ - -.login-page { - height: 100%; - background-image: url(../img/blank.png); - background-repeat: no-repeat; - background-position: center; - background-size: cover; - transition: all 0.5s; - - .video { - position: absolute; - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; - background-color: #000; - background-color: var(--darker); - overflow: hidden; - pointer-events: none; - - video { - width: 100%; - height: auto; - } - } - - .volume-control { - position: fixed; - right: 1rem; - top: 1rem; - width: 1.5rem; - height: 1.5rem; - z-index: 5000; - cursor: pointer; - background-size: contain; - background-image: url(../img/volume_high.svg); - - &.mute { - background-image: url(../img/volume_off.svg); - } - } - - .main-bg{ - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - background-image: url(../img/blank.png); - background-repeat: no-repeat; - background-position: center; - background-size: cover; - transition: all 0.5s; - } - - .login-container { - height: 100%; - margin-left: 4.5rem; - position: absolute; - top: 0px; - display: flex; - flex-direction: column; - -webkit-box-pack: center; - justify-content: center; - align-items: flex-start; - min-height: 100%; - z-index: 2; - width: 420px; - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 35px -5px; - margin-left: 5%; - background: transparent; - - .login-form { - display: flex; - flex-direction: column; - -webkit-box-align: center; - align-items: center; - position: absolute; - top: 0px; - width: 100%; - min-height: 100%; - max-width: 420px; - background-color: rgb(255, 255, 255); - - .brand { - display: flex; - -webkit-box-align: center; - align-items: center; - margin: 50px auto 100px 50px; - color: #525461; - - .icon { - width: 50px; - height: auto; - margin-right: 25px; - } - - .brand-text { - font-size: 1.25rem; - font-weight: 700; - font-family: "TypoGraphica"; - - } - - &:hover { - text-decoration: none; - } - } - - .form-login { - width: 100%; - padding: 20px 50px; - box-sizing: border-box; - - .errorbox { - text-align: center; - color: #fb6340; - color: var(--warning); - padding-bottom: 2rem; - } - - .input-group { - margin-bottom: 1.25rem; - position: relative; - - &::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #525461; - font-size: 1.5rem; - position: absolute; - z-index: 100; - left: 10px; - top: 10px; - } - - .border { - position: absolute; - width: 100%; - height: 1px; - bottom: 0; - border-bottom: 1px #5e72e4 solid; - transform: scaleX(0); - transition: transform 0.3s; - } - - input { - font-size: 1rem; - line-height: 1.5em; - display: block; - width: 100%; - padding: .5rem .75rem 0.5rem 3rem; - margin: 0.825rem 0; - box-sizing: border-box; - transition: all .3s cubic-bezier(.68, -.55, .265, 1.55); - color: #525461; - border: 0; - border-radius: 0; - border-bottom: 1px solid #fff; - background-color: transparent; - background-clip: padding-box; - box-shadow: 0 3px 2px rgba(233, 236, 239, .05); - outline: none; - - &:focus+.border { - transform: scaleX(1); - } - } - - .cbi-input-password { - margin-bottom: 2rem; - position: relative; - } - } - - .user-icon::before { - content: "\e971"; - } - - .pass-icon::before { - content: "\e910"; - - } - } - - .cbi-button-apply { - width: 100% !important; - box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 50px 0px; - font-weight: 600; - font-size: 15px; - color: rgb(255, 255, 255); - text-align: center; - width: 100%; - cursor: pointer; - min-height: 50px; - background-color: #5e72e4 !important; - border-radius: 6px; - outline: none; - border-width: initial; - border-style: none; - border-color: initial; - border-image: initial; - padding: 10px 0px; - margin: 30px 0px 100px; - transition: all 0.3s; - letter-spacing: 0.8rem; - - &:hover, - :focus { - background-color: #5065d8 !important; - } - } - } - - footer { - box-sizing: border-box; - width: 100%; - text-align: center; - line-height: 1.6rem; - display: flex; - justify-content: space-evenly; - margin-top: auto; - padding: 0px 0px 30px; - color: #525461; - z-index: 10; - - .ftc { - position: absolute; - bottom: 30px; - width: 100%; - } - - .luci-link { - display: block; - } - } - } -} - - -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius)); - backdrop-filter: blur(var(--blur-radius)); - background-color: rgba(244, 245, 247, var(--blur-opacity)); - - } -} - - -header, -.main { - width: 100%; -} - - -footer { - font-size: .8rem; - overflow: hidden; - padding: 1rem; - text-align: right; - white-space: nowrap; - color: #aaa; -} - -footer>a { - text-decoration: none; - color: #aaa; -} - -small { - font-size: 90%; - line-height: 1.42857143; - white-space: normal; -} - -.main { - position: relative; - top: 0; - bottom: 0; - overflow-y: auto; - height: 100%; -} - -.main-left { - position: fixed; - top: 0; - float: left; - overflow-x: auto; - width: 15%; - width: calc(0% + 15rem); - height: 100%; - background-color: #fff; - background-color: var(--menu-bg-color); - box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; - overflow-x: auto; - position: fixed; - z-index: 100; - - - .sidenav-header { - padding: 1.5rem; - text-align: center; - - .brand { - font-size: 1.8rem; - color: #5e72e4; - font-family: "TypoGraphica"; - text-decoration: none; - text-align: center; - cursor: default; - vertical-align: text-bottom; - white-space: nowrap; - } - } - - &::-webkit-scrollbar { - width: 5px; - height: 1px; - } - - &::-webkit-scrollbar-thumb { - background-color: #f6f9fc - } - - &::-webkit-scrollbar-track { - background-color: #fff; - } -} - -.main-right { - float: right; - width: 85%; - width: calc(100% - 15rem); - height: 100%; - transition: all 0.2s; -} - -.main-right>#maincontent { - position: relative; - z-index: 50; -} - -.pull-right { - float: right; -} - -.pull-left { - float: left; -} - -.nowrap:not(.td) { - white-space: nowrap; -} - -[disabled="disabled"] { - pointer-events: none; -} - -header { - color: #fff; - color: var(--header-color); - padding: 0; - position: relative; - - &.bg-primary { - background-color: #5e72e4 !important; - background-color: var(--primary) !important; - } - - &::after { - content: ""; - position: absolute; - height: 2rem; - width: 100%; - background-color: #5e72e4 !important; - } - - .fill { - padding: 0.8rem 0; - border-bottom: 0px solid rgba(255, 255, 255, .08) !important; - - .container { - height: 2rem; - padding: 0 1.25rem; - - .showSide { - display: none; - color: #fff; - font-size: 1.4rem; - - &:hover { - text-decoration: none; - } - } - - .brand { - font-size: 1.5rem; - color: #fff; - font-family: "TypoGraphica"; - text-decoration: none; - padding-left: 1rem; - cursor: default; - vertical-align: text-bottom; - display: none; - } - - .pull-right { - float: right; - margin-top: 0rem; - display: flex; - } - } - - .status { - position: absolute; - top: 25%; - right: 1.25rem; - float: right; - - span[data-indicator="poll-status"] { - display: block; - font-size: 0.8rem; - font-weight: bold; - padding: 0.3rem 0.8rem; - white-space: nowrap; - text-decoration: none; - text-transform: uppercase; - text-shadow: none; - border-radius: 3px; - cursor: pointer; - transition: all 0.3s; - } - - span[data-style="active"] { - color: #32325d !important; - background-color: #fff; - - } - - span[data-style="inactive"] { - color: #ffffff !important; - background-color: #32325d; - - } - } - } -} - - - -#xhr_poll_status { - display: flex; - margin-left: 0.5rem; - - * { - color: #fff; - } -} - -div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { - border: 0 !important; -} - -.danger { - background-color: #ff7d60 !important; -} - -.warning { - background-color: #f0e68c !important; -} - -.success { - background-color: #5cb85c !important; -} - -.notice { - background-color: #11cdef !important; - color: #fff; -} - -.error { - color: #f00; -} - -.alert, -.alert-message { - font-weight: bold; - margin-bottom: 1em; - padding: 1rem; - border: 0; - border-radius: 0.375rem !important; - background-color: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); - text-shadow: 1px 1px rgba(0, 0, 0, .1); - - &.error { - background-color: #ffd600; - } - - h4 { - padding: 0rem 1.5rem 0.75rem 0rem; - } - - .btn { - height: auto; - } -} - -.alert-message>h4 { - font-size: 110%; - font-weight: bold; -} - -.alert-message>* { - margin: .5rem 0; -} - -.alert-message .btn { - padding: .3rem .6rem; -} - -.container .alert, -.container .alert-message { - margin-top: 1rem; -} - - -/* - * Main Menu - */ - -.main { - .main-left { - transition: all 0.2s; - - .nav { - margin-top: 0.5rem; - - li { - padding: 0.5rem 1rem; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - a { - display: block; - color: #5f6368; - color: var(--menu-color); - } - - &.slide { - padding: 0; - - ul { - display: none; - } - - .menu { - display: block; - margin: 0.1rem .5rem 0.1rem .5rem; - padding: .675rem 0 .675rem 2.5rem; - border-radius: .375rem; - text-decoration: none; - cursor: default; - font-size: 1rem; - transition: all 0.2s; - position: relative; - - &.active { - color: #fff; - background: #5e72e4; - background: var(--primary); - - &::before { - color: #fff !important; - } - - &::after { - transform: rotate(90deg); - color: #fff !important; - } - } - - &:hover { - cursor: pointer; - color: #fff; - background: #5e72e4; - background: var(--primary); - - &::before { - color: #fff !important; - } - } - - &::before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - padding-top: 3px; - transition: all 0.3s; - content: "\e915"; - color: #5e72e4; - } - - &::after { - position: absolute; - right: 0.5rem; - top: 0.8rem; - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: '\e90f'; - transition: all .15s ease; - color: #ced4da; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - transition: all 0.3s; - } - } - - .menu[data-title=Status]:before { - content: "\e906"; - color: #5e72e4; - } - - .menu[data-title=System]:before { - content: "\e90a"; - color: #fb6340; - } - - .menu[data-title=Services]:before { - content: "\e909"; - color: #11cdef; - } - - .menu[data-title=NAS]:before { - content: "\e90c"; - color: #f3a4b5; - } - - .menu[data-title=VPN]:before { - content: "\e90b"; - color: #8965e0; - } - - .menu[data-title=Network]:before { - content: "\e908"; - color: #8965e0; - } - - .menu[data-title=Bandwidth_Monitor]:before { - content: "\e90d"; - color: #2dce89; - } - - .menu[data-title=Docker]:before { - content: "\e911"; - color: #6699ff; - } - - .menu[data-title=Statistics]:before { - content: "\e913"; - color: #8965e0; - } - - .menu[data-title=Control]:before { - content: "\e912"; - color: #5e72e4; - } - - .menu[data-title=Asterisk]:before { - content: "\e914"; - color: #fb6340; - } - - .menu[data-title=Logout]:before { - content: "\e907"; - color: #adb5bd; - } - - &:hover { - background: none; - } - - .slide-menu { - margin: 0 0.5rem 0 2.5rem; - padding: 0rem 0.5rem; - - li { - position: relative; - border-radius: 0.375rem; - margin: 0.2rem 0; - padding: 0.5rem 0rem; - background: none; - - a { - white-space: nowrap; - text-decoration: none; - } - - &::after { - content: ""; - position: absolute; - left: 0; - bottom: 0; - width: 0; - height: 2px; - background-color: #5e72e4; - transition: all 0.2s; - } - - &:hover { - background: none; - - &::after { - width: 100%; - } - } - - } - - .active { - background: none; - - color: var(--menu-color); - - a { - color: var(--menu-color); - } - - &::after { - content: ""; - position: absolute; - left: 0; - bottom: 0; - width: 100%; - height: 2px; - background-color: #5e72e4; - transition: all 0.2s; - } - - &:hover { - - background: none; - - &::after { - width: 100%; - } - } - } - } - - } - } - } - } -} - -.lg { - margin: 0; - padding: 0 !important; -} - -.logout { - display: block; - margin: 0.8rem .5rem 0.1rem 0.5rem; - padding: .675rem 0 .675rem 2.5rem; - border-radius: .375rem; - text-decoration: none; - font-size: 1rem; - transition: all 0.2s; - position: relative; -} - -.logout:before { - font-family: 'argon' !important; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - left: 0.8rem; - padding-top: 3px; - transition: all 0.3s; - content: "\e907"; - color: #32325d !important; -} - - -body[class*="node-"]>.main>.main-left>.nav>.slide>.menu::before { - transition: transform .1s ease-in-out; -} - -body[class*="node-"]>.main>.main-left>.nav>.slide>.menu.active::before { - transition: transform .2s ease-in-out; -} - -.main>.main-left[style*="overflow: hidden"]>.nav>.slide>.menu::before { - display: none; -} - - - - -#maincontent>.container { - margin: 0 1.25rem 1rem 1.25rem; -} - -ul { - line-height: normal; -} - -li { - list-style-type: none; -} - -h1 { - font-size: 2rem; - padding-bottom: 10px; - border-bottom: thin solid #eee; -} - -h2 { - margin: 0 0 1rem 0; - font-size: 1.25rem; - letter-spacing: 0.1rem; - padding: 1rem 1.5rem; - color: #32325d; - border-radius: .375rem; - background: #fff; - box-shadow: 0 4px 8px rgba(0, 0, 0, .03); - -} - -h3 { - font-size: 1.1rem; - line-height: 1; - display: block; - width: 100%; - margin: 0; - margin-bottom: 0; - padding: 0.8755rem 1.5rem; - color: #32325d; - color: var(--gray-dark); - border-radius: .375rem; - background: #fff; -} - -h4 { - margin: 0; - padding: 0.75rem 1.5rem; - font-size: 0.7rem; - font-weight: 600; - color: #525f7f; - background-color: #e9ecef; - background-color: var(--lighter); - - em { - padding: 0 0.5rem; - } - -} - -h5 { - font-size: 1rem; - margin: 2rem 0 0 0; - padding-bottom: 10px; -} - -.cbi-section, -.cbi-section-error, -#iptables, -.Firewall form, -#cbi-network>.cbi-section-node, -#cbi-wireless>.cbi-section-node, -#cbi-wireless>#wifi_assoclist_table, -[data-tab-title], -[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), -[data-page="admin-system-opkg"] #maincontent>.container { - font-family: inherit; - font-weight: normal; - font-style: normal; - line-height: normal; - min-width: inherit; - margin: 1.5rem 0; - padding: 0rem; - border: 0; - - border-radius: 0.375rem; - background-color: #fff; - box-shadow: 0 0 1rem 0 rgba(136, 152, 170, .15) -} - -.cbi-modal .cbi-section, -.cbi-section .cbi-section { - padding: 0; - box-shadow: none; -} - -.cbi-modal .cbi-tabmenu { - margin-left: 0; -} - -.cbi-map-descr, -.cbi-section-descr { - font-size: small; - line-height: 1.42857143; - padding: .5rem 1.5rem; -} - -.cbi-map-descr+fieldset { - margin-top: 1rem; -} - -.cbi-map-descr>abbr { - cursor: help; - text-decoration: underline; -} - -.cbi-section>legend { - display: none !important; -} - -fieldset>fieldset, -.cbi-section>.cbi-section { - margin: 0; - padding: 0; - border: 0; - box-shadow: none; -} - -.cbi-section>h3:first-child, -.panel-title { - font-size: 1.1rem; - line-height: 1; - display: block; - width: 100%; - margin: 0; - margin-bottom: 0; - padding: 0.8755rem 1.5rem; - color: #32325d; - color: var(--gray-dark); - -} - -.cbi-section>h3:first-child, -.cbi-section>h4:first-child, -.cbi-section>p:first-child, -[data-tab-title]>h3:first-child, -[data-tab-title]>h4:first-child, -[data-tab-title]>p:first-child { - padding: 1rem; -} - -.cbi-section p { - padding: 1rem; -} - -table { - border-spacing: 0; - border-collapse: collapse; -} - -table, -.table { - overflow-y: hidden; - width: 100%; - font-size: 90%; -} - -.table .table-titles th { - background-color: #e9ecef; - background-color: var(--lighter); -} - -table>tbody>tr>td, -table>tbody>tr>th, -table>tfoot>tr>td, -table>tfoot>tr>th, -table>thead>tr>td, -table>thead>tr>th, -.table>.tbody>.tr>.td, -.table>.tbody>.tr>.th, -.table>.tfoot>.tr>.td, -.table>.tfoot>.tr>.th, -.table>.thead>.tr>.td, -.table>.thead>.tr>.th, -.table>.tr>.td.cbi-value-field, -.table>.tr>.th.cbi-section-table-cell { - padding: .5rem; -} - -.container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td { - padding: .6rem; -} - -.cbi-section-table-cell { - line-height: 1.1; - align-self: flex-end; - flex: 1 1 auto; -} - -tr>td, -tr>th, -.tr>.td, -.tr>.th, -.cbi-section-table-row::before, -#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) { - border-top: thin solid #ddd; - padding: 1.1em 1.5rem; -} - -#cbi-wireless .td, -#cbi-network .tr:first-child>.td, -.table[width="100%"]>.tr:first-child>.td, -[data-page="admin-network-diagnostics"] .tr>.td, -.tr.table-titles>.th, -.tr.cbi-section-table-titles>.th { - border-top: 0 !important; - background-color: #f6f9fc; - padding: 1.1em 1.5rem; - line-height: 1.3rem; -} - -.table[width="100%"]>.tr:first-child>.td { - margin: auto 0; -} - -.cbi-section-table-row { - margin-bottom: 1rem; - text-align: center !important; - background: #f4f4f4; -} - -.cbi-section-table-row:last-child { - margin-bottom: 0; -} - -.cbi-section-table-row>.cbi-value-field .cbi-dropdown, -.cbi-section-table-row>.cbi-value-field .cbi-input-select, -.cbi-section-table-row>.cbi-value-field .cbi-input-text, -.cbi-section-table-row>.cbi-value-field .cbi-input-password { - width: 100%; -} - -.cbi-section-table-row>.cbi-value-field [data-dynlist]>input, -.cbi-section-table-row>.cbi-value-field input.cbi-input-password { - width: calc(100% - 1.5rem); -} - -.cbi-section-table-row .td { - text-align: center !important; -} - -div>table>tbody>tr:nth-of-type(2n), -div>.table>.tr:nth-of-type(2n) { - background-color: #f9f9f9; -} - -/* fix multiple table */ -table table, -.table .table, -.cbi-value-field table, -.cbi-value-field .table, -td>table>tbody>tr>td, -.td>.table>.tbody>.tr>.td, -.cbi-value-field>table>tbody>tr>td, -.cbi-value-field>.table>.tbody>.tr>.td { - border: 0; -} - -/* button style */ -.btn, -.cbi-button, -.item::after { - font-size: .8rem; - display: inline-block; - width: auto !important; - padding: 0.45rem .8rem; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - transition: all .2s ease-in-out; - text-align: center; - vertical-align: middle; - white-space: nowrap; - text-decoration: none; - text-transform: uppercase; - color: rgba(0, 0, 0, .87); - border: 0; - border-radius: .2rem; - background-color: #f0f0f0; - background-image: none; - -webkit-appearance: none; - -ms-touch-action: manipulation; - touch-action: manipulation; -} - -.cbi-button-up, -.cbi-button-down { - font-size: 1.2rem; - display: inline-block; - min-width: 0; - padding: .2rem .3rem; - color: transparent !important; - background: url(../icon/arrow.svg) no-repeat center; - background-size: 12px 20px; -} - -.cbi-button-up { - transform: scaleY(-1); -} - -.cbi-button:not(select) { - -webkit-appearance: none !important; -} - - -.btn:hover, -.btn:focus, -.btn:active, -.cbi-button:hover, -.cbi-button:focus, -.cbi-button:active, -.item:hover::after, -.item:focus::after, -.item:active::after, -.cbi-page-actions .cbi-button-apply+.cbi-button-save:hover, -.cbi-page-actions .cbi-button-apply+.cbi-button-save:focus, -.cbi-page-actions .cbi-button-apply+.cbi-button-save:active { - text-decoration: none; - outline: 0; -} - -.btn:hover, -.btn:focus, -.cbi-button:hover, -.cbi-button:focus, -.item:hover::after, -.item:focus::after { - box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 2px rgba(0, 0, 0, .2); -} - -.btn:active, -.cbi-button:active, -.item:active::after { - box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23); -} - -.cbi-button-up:hover, -.cbi-button-up:focus { - box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 -2px 2px rgba(0, 0, 0, .2); -} - -.cbi-button-up:active { - box-shadow: 0 -10px 20px rgba(0, 0, 0, .19), 0 -6px 6px rgba(0, 0, 0, .23); -} - -.btn:disabled, -.cbi-button:disabled { - cursor: not-allowed; - pointer-events: none; - opacity: .5; - box-shadow: none; -} - -/* gray */ -.alert-message [class="btn"], -.modal div[class="btn"], -.cbi-button-find, -.cbi-button-link, -.cbi-button-up, -.cbi-button-down, -.cbi-button-neutral, -.cbi-button[name="zero"], -.cbi-button[name="restart"], -.cbi-button[onclick="hide_empty(this)"] { - font-weight: bold; - color: #fff; - border: thin solid #8898aa; - background-color: #8898aa; -} - -/* dark blue */ -.btn.primary, -.cbi-page-actions .cbi-button-save, -.cbi-page-actions .cbi-button-apply+.cbi-button-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-positive, -.cbi-button-link, -.cbi-button[value="Enable"], -.cbi-button[value="Scan"], -.cbi-button[value^="Back"], -.cbi-button-neutral[onclick="handleConfig(event)"] { - font-weight: normal; - color: #fff !important; - border: thin solid #5e72e4; - border: thin solid var(--primary); - background-color: #5e72e4; - background-color: var(--primary); - ; -} - -/* light blue */ -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit, -.cbi-button-apply, -.cbi-button-reload, -.cbi-button-action, -.cbi-button[value="Submit"], -.cbi-button[value="Upload"], -.cbi-button[value$="Apply"], -.cbi-button[onclick="addKey(event)"] { - font-weight: normal; - color: #fff !important; - border: thin solid #5e72e4; - border: thin solid var(--primary); - - background-color: #5e72e4; - background-color: var(--primary); -} - -/* red */ -.btn.danger, -.cbi-section-remove>.cbi-button, -.cbi-button-remove, -.cbi-button-reset, -.cbi-button-negative, -.cbi-button[value="Stop"], -.cbi-button[value="Kill"], -.cbi-button[onclick="reboot(this)"], -.cbi-button-neutral[value="Restart"] { - font-weight: normal; - color: #fff; - border: thin solid #f5365c; - border: thin solid var(--red); - background-color: #f5365c; - background-color: var(--red); -} - -/* yellow */ -.btn[value="Dismiss"], -.cbi-button[value="Terminate"], -.cbi-button[value="Reset"], -.cbi-button[value="Disabled"], -.cbi-button[onclick^="iface_reconnect"], -.cbi-button[onclick="handleReset(event)"], -.cbi-button-neutral[value="Disable"] { - font-weight: normal; - color: #fff; - border: thin solid #eea236; - background-color: #f0ad4e; -} - -/* green */ -.cbi-button-success, -.cbi-button-download, -.cbi-button[name="backup"], -.cbi-button[value="Download"], -.cbi-button[value="Save mtdblock"] { - font-weight: normal; - color: #fff; - border: thin solid #4cae4c; - background-color: #5cb85c; -} - -.cbi-page-actions .cbi-button-link:first-child { - float: left; -} - -.a-to-btn { - text-decoration: none; -} - -.cbi-value-field .cbi-button-add { - font-weight: bold; - margin: 4px 0 4px 3px; - padding: 1px 6px; - display: flex; - align-items: center; -} - -.tabs { - margin: 0 0 1rem 0; - padding: 0 1rem; - background-color: #FFFFFF; - border-radius: 0.375rem; - box-shadow: 0 4px 8px rgba(0, 0, 0, .03); - white-space: nowrap; - overflow-x: auto; - - &::-webkit-scrollbar { - width: 1px; - height: 5px; - } - - &::-webkit-scrollbar-thumb { - background-color: #f6f9fc - } - - &::-webkit-scrollbar-track { - background-color: #fff; - } - - li[class~="active"], - li:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - color: #5e72e4; - background-color: #dce1fe; - margin-bottom: 0; - border-radius: 0; - - a { - color: #5e72e4; - } - } - - li { - font-size: 0.875rem; - display: inline-block; - padding: 0.875rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); - margin: 0 0.2rem; - - a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; - } - - &:hover { - border-bottom: 0.18751rem solid #5e72e4; - } - } -} - - - - -.cbi-tabmenu { - color: white; - padding: 0.5rem 1rem 0 1rem; - white-space: nowrap; - overflow-x: auto; - - &::-webkit-scrollbar { - width: 1px; - height: 5px; - } - - &::-webkit-scrollbar-thumb { - background-color: #f6f9fc - } - - &::-webkit-scrollbar-track { - background-color: #fff; - } - - li { - background: #dce3e9; - display: inline-block; - font-size: 0.875rem; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - padding: 0.5rem 0rem; - border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); - margin: 0 0.2rem; - - a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; - } - - &:hover { - cursor: pointer; - border-bottom: 0.18751rem solid #5e72e4; - color: #5e72e4; - background-color: #dce1fe; - margin-bottom: 0; - - a { - color: #525f7f; - } - } - } - - li[class~="cbi-tab"] { - border-bottom: 0.18751rem solid #5e72e4; - color: #5e72e4; - background-color: #dce1fe; - margin-bottom: 0; - - a { - color: #5e72e4; - } - } -} - -.cbi-tab-descr { - padding: 0.5rem 1.5rem; -} - - -.cbi-section .cbi-section-remove:nth-of-type(2n), -.container>.cbi-section .cbi-section-node:nth-of-type(2n) { - background-color: #f9f9f9; -} - -[data-tab-title] { - overflow: hidden; - height: 0; - opacity: 0; - margin: 0; - padding: 0rem 0rem !important; - - p { - margin-left: 1rem; - margin-bottom: 1rem; - } -} - - - -[data-tab-active="true"] { - overflow: visible; - height: auto; - opacity: 1; - transition: opacity .25s ease-in; - margin: inherit !important; -} - - -.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3), -.cbi-section[id] .cbi-section-node:nth-of-type(4n+4) { - background-color: #f9f9f9; -} - -.cbi-section-node-tabbed { - margin-top: 0; - padding: 0; - border: 0 solid #d4d4d4; - border-radius: 0.375rem; -} - -.cbi-tabcontainer>.cbi-value:nth-of-type(2n) { - background-color: #f9f9f9; -} - -.cbi-value-field, -.cbi-value-description { - line-height: 1.25; - display: table-cell; - - abbr { - color: #32325d; - color: var(--gray-dark); - } -} - -.cbi-value-description { - font-size: small; - padding: .5rem; - opacity: .5; -} - -.cbi-value-title { - display: table-cell; - float: left; - width: 23rem; - padding-top: .25rem; - padding-right: 2rem; - text-align: right; - word-wrap: break-word; -} - -.cbi-value { - display: inline-block; - width: 100%; - padding: .35rem 1rem .2rem 1rem; - line-height: 2.4rem; -} - -.cbi-value ul { - line-height: 1.25; -} - -.cbi-value-field .cbi-dropdown, -.cbi-value-field .cbi-input-select, -.cbi-value input[type="text"], -.cbi-value input[type="password"] { - min-width: 18rem; -} - -.cbi-value input[type="password"] { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - margin-right: 0; -} - -.cbi-value input[type="password"]+.cbi-button-neutral { - height: 42px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - margin-left: 0; - border: 0; -} - -#cbi-firewall-zone .cbi-input-select, -#cbi-network-switch_vlan .cbi-input-select { - min-width: 11rem; -} - -#cbi-network-switch_vlan .cbi-input-text { - max-width: 3rem; -} - -.cbi-input-invalid { - color: #f5365c; - border-bottom-color: #f5365c; -} - -.cbi-section-error { - font-weight: bold; - line-height: 1.42857143; - margin: 18px; - padding: 6px; - border: thin solid #f5365c; - border-radius: 3px; - background-color: #fce6e6; -} - -.cbi-section-error ul { - margin: 0 0 0 20px; -} - -.cbi-section-error ul li { - font-weight: bold; - color: #f5365c; -} - -.td[data-title]::before { - font-weight: bold; - display: none; - padding: .25rem 0; - content: attr(data-title) ":\20"; - text-align: left; - white-space: nowrap; -} - -.tr.placeholder .td[data-title]::before { - display: none; -} - -.tr[data-title]::before, -.tr.cbi-section-table-titles.named::before { - font-weight: bold; - display: table-cell; - align-self: center; - flex: 1 1 5%; - padding: .25rem; - content: attr(data-title) "\20"; - text-align: center; - vertical-align: middle; - white-space: normal; - word-wrap: break-word; -} - -.cbi-rowstyle-1 { - background-color: #f9f9f9; -} - -.cbi-rowstyle-2 { - background-color: #eee; -} - -.cbi-rowstyle-2 .cbi-button-up, -.cbi-rowstyle-2 .cbi-button-down, -body:not(.Interfaces) .cbi-rowstyle-2:first-child { - background-color: #fff !important; -} - -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; -} - -.td.cbi-section-actions { - text-align: right !important; - vertical-align: middle; -} - -.td.cbi-section-actions>* { - display: inline-flex; -} - -.td.cbi-section-actions>*>*, -.td.cbi-section-actions>*>form>* { - margin: 0 5px; - display: flex; - align-items: center; -} - -.td.cbi-section-actions>*>form { - display: inline-flex; - margin: 0; -} - -.cbi-checkbox { - margin: 0 0.25rem; -} - -/* lists */ -.cbi-dynlist { - line-height: 1.3; - flex-direction: column; - min-height: 30px; - cursor: text; -} - -.cbi-dynlist>.item { - position: relative; - max-width: 25rem; - pointer-events: none; - color: #8898aa; - outline: 0; -} - -.cbi-dynlist[name="sshkeys"]>.item { - max-width: none; -} - -.cbi-dynlist>.item::after { - position: absolute; - width: 2.2rem !important; - height: calc(100% - 0.5rem - 2px); - right: 0; - bottom: 0; - content: "\00D7"; - pointer-events: auto; - background-color: var(--red); - font-weight: normal; - font-size: 1.2rem; - display: flex; - align-items: center; - justify-content: center; - line-height: 1.5rem; - padding: 0; - margin: 0.25rem 0.1rem 0.25rem 0; - color: #fff; - border: 1px solid #f5365c; - border-radius: 0.25rem; - outline: 0; - background-image: none; - box-shadow: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.cbi-dynlist>.item>span { - white-space: normal; - word-break: break-word; - line-height: 1.5rem; - padding: 0.5rem 0.5rem; - margin: 0.25rem 0.1rem; - color: #8898aa; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - outline: 0; - background-image: none; - box-shadow: none; - display: block; - transition: box-shadow 0.15s ease; - box-sizing: border-box; - min-width: 15rem; -} - -.cbi-dynlist>.add-item { - display: inline-flex; - align-items: center; - width: 100%; - min-width: 16rem; -} - -.cbi-dynlist>.add-item input { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - margin-right: 0; - border-right: none; -} - -.cbi-dynlist>.add-item .cbi-button-add { - font-weight: normal; - font-size: 1.2rem; - display: flex; - align-items: center; - line-height: 1.5rem; - padding: 0.5rem 0.75rem; - margin: 0.25rem 0.1rem 0.25rem 0; - color: #fff; - border: 1px solid #5e72e4; - border-radius: 0.25rem; - outline: 0; - background-image: none; - box-shadow: none; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.cbi-dynlist>.add-item:not([ondrop])>input { - overflow: hidden; - width: 100%; - min-width: 15rem; - white-space: nowrap; - text-overflow: ellipsis; -} - -.cbi-dynlist>.add-item[ondrop]>input { - min-width: 13rem; -} - -.cbi-dynlist, -.cbi-dropdown { - position: relative; - display: inline-flex; - padding: 0.2rem 0.2rem; -} - -.cbi-dropdown[placeholder*="select"] { - max-width: 25rem; - height: auto; - margin-top: -3px; -} - -.cbi-dropdown>ul { - display: flex; - overflow-x: hidden; - overflow-y: auto; - width: 100%; - margin: 0 !important; - padding: 0; - list-style: none; - outline: 0; -} - - -.cbi-dropdown>ul.preview { - display: none; - -} - -.cbi-button-apply>ul.preview { - display: none; - - li { - color: #fff; - } - -} - -.cbi-button-apply>ul:first-child { - li { - color: #fff; - } - -} - -.cbi-dropdown>.open { - flex-basis: 15px; -} - -.cbi-dropdown>.open, -.cbi-dropdown>.more { - font-size: 1rem; - font-weight: 900; - line-height: 2; - display: flex; - flex-direction: column; - flex-grow: 0; - flex-shrink: 0; - justify-content: center; - padding: 0 .25em; - cursor: default; - text-align: center; - outline: 0; -} - -.cbi-dropdown>.more, -.cbi-dropdown>ul>li[placeholder] { - font-weight: bold; - display: none; - color: #777; - text-shadow: 1px 1px 0 #fff; -} - -.cbi-dropdown>ul>li { - display: none; - overflow: hidden; - align-items: center; - align-self: center; - flex-grow: 1; - flex-shrink: 1; - min-height: 20px; - padding: .25em; - white-space: nowrap; - text-overflow: ellipsis; - -} - -.cbi-dropdown>ul>li .hide-open { - display: initial; -} - -.cbi-dropdown>ul>li .hide-close { - display: none; -} - -.cbi-dropdown>ul>li[display]:not([display="0"]) { - border-left: thin solid #ccc; -} - -.cbi-dropdown[empty]>ul { - max-width: 1px; -} - -.cbi-dropdown>ul>li>form { - display: none; - margin: 0; - padding: 0; - pointer-events: none; -} - -.cbi-dropdown>ul>li img { - margin-right: .25em; - vertical-align: middle; -} - -.cbi-dropdown>ul>li>form>input[type="checkbox"] { - height: auto; - margin: 0; -} - -.cbi-dropdown>ul>li input[type="text"] { - height: 20px; -} - -.cbi-dropdown[open]>ul.dropdown { - position: absolute; - z-index: 1100; - display: block; - width: auto; - min-width: 100%; - max-width: none; - max-height: 200px !important; - border: 0 solid #918e8c; - background: #ffffff; - box-shadow: 0 0 4px #918e8c; - border-bottom-left-radius: 0.35rem; - border-bottom-right-radius: 0.35rem; - color: var(--main-menu-color); - margin-left: -0.2rem !important; - - li { - color: #000; - } -} - - -.cbi-dropdown>ul>li[display], -.cbi-dropdown[open]>ul.preview, -.cbi-dropdown[open]>ul.dropdown>li, -.cbi-dropdown[multiple]>ul>li>label, -.cbi-dropdown[multiple][open]>ul.dropdown>li, -.cbi-dropdown[multiple][more]>.more, -.cbi-dropdown[multiple][empty]>.more { - display: flex; - align-items: center; - flex-grow: 1; - -} - -.cbi-dropdown[empty]>ul>li, -.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder], -.cbi-dropdown[multiple][open]>ul.dropdown>li>form { - display: block; -} - -.cbi-dropdown[open]>ul.dropdown>li .hide-open { - display: none; -} - -.cbi-dropdown[open]>ul.dropdown>li .hide-close { - display: initial; -} - -.cbi-dropdown[open]>ul.dropdown>li { - border-bottom: thin solid #ccc; - padding: 0.5rem 0.8rem; -} - -.cbi-dropdown[open]>ul.dropdown>li label { - margin-left: 0.5rem; -} - -.cbi-dropdown[open]>ul.dropdown>li[selected] { - background: #dce1fe; -} - -.cbi-dropdown[open]>ul.dropdown>li.focus { - background: #dce1fe; - outline: none; -} - -.cbi-dropdown[open]>ul.dropdown>li:last-child { - margin-bottom: 0; - border-bottom: 0; -} - -.cbi-dropdown[open]>ul.dropdown>li[unselectable] { - opacity: .7; -} - -.cbi-dropdown[open]>ul.dropdown>li>input.create-item-input:first-child:last-child { - width: 100%; -} - -.cbi-dropdown[disabled] { - pointer-events: none; - opacity: .6; -} - -.cbi-dropdown .zonebadge { - width: 100%; -} - -.cbi-dropdown[open] .zonebadge { - width: auto; -} - -/* progressbar */ -.cbi-progressbar { - position: relative; - min-width: 170px; - height: 20px; - margin: 6px 0; - border: thin solid #999; - background: #eee; - border-radius: 0.2rem; - overflow: hidden; -} - -.cbi-progressbar>div { - width: 0; - height: 100%; - transition: width .25s ease-in; - background: #5bc0de; - background: var(--bar-bg); -} - -.cbi-progressbar::after { - font-family: monospace; - font-size: 1em; - font-weight: bold; - font-size-adjust: .38; - line-height: normal; - position: absolute; - top: 2px; - right: 0; - bottom: 2px; - left: 0; - overflow: hidden; - content: attr(title); - text-align: center; - white-space: pre; - text-overflow: ellipsis; -} - -#modal_overlay { - position: fixed; - z-index: 900; - top: 0; - right: 10000px; - bottom: 0; - left: -10000px; - overflow-y: scroll; - transition: opacity .125s ease-in; - opacity: 0; - background: rgba(0, 0, 0, .7); - -webkit-overflow-scrolling: touch; -} - -.modal { - display: flex; - align-items: center; - flex-wrap: wrap; - width: 90%; - min-width: 270px; - max-width: 600px; - min-height: 32px; - margin: 5em auto; - padding: 1em; - border-radius: 3px !important; - background: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); -} - -.modal>* { - line-height: normal; - flex-basis: 100%; - margin-bottom: .5em; - max-width: 100%; -} - -.modal>pre, -.modal>textarea { - font-size: 1rem; - font-size-adjust: .35; - overflow: auto; - margin-bottom: .5em; - padding: 8.5px; - cursor: auto; - white-space: pre-wrap; - color: #eee; - outline: 0; - background-color: #101010; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); -} - -.modal>h4 { - margin: .5em 0; -} - -.modal ul { - margin-left: 2.2em; -} - -.modal li { - list-style-type: square; - color: #808080; -} - -.modal p { - - word-break: break-word; -} - -.modal .label { - font-size: .6rem; - font-weight: normal; - padding: .1rem .3rem; - padding-bottom: 0; - cursor: default; - border-radius: 0; -} - -.modal .label.warning { - background-color: #f0ad4e !important; -} - -.modal .btn { - padding: 0.45rem 0.8rem; -} - -.modal.cbi-modal { - max-width: 90%; - max-height: none; -} - -body.modal-overlay-active { - overflow: hidden; - height: 100vh; -} - -body.modal-overlay-active #modal_overlay { - right: 0; - left: 0; - opacity: 1; -} - - - -.spinning { - position: relative; - padding-left: 32px !important; -} - -.spinning::before { - position: absolute; - top: 0; - bottom: 0; - left: .2em; - width: 32px; - content: ""; - background: url(/luci-static/resources/icons/loading.gif) no-repeat center; - background-size: 16px; -} - -/* luci */ -.hidden { - display: none; -} - -.left, -.left::before { - text-align: left !important; -} - -.right, -.right::before { - text-align: right !important; -} - -.center, -.center::before { - text-align: center !important; -} - -.top { - align-self: flex-start !important; - vertical-align: top !important; -} - -.bottom { - align-self: flex-end !important; - vertical-align: bottom !important; -} - -.inline { - display: inline; -} - -.cbi-page-actions { - padding-top: 1rem; - text-align: right; -} - -.cbi-page-actions>form[method="post"] { - display: inline-block; -} - -.th[data-type="button"], -.td[data-type="button"], -.th[data-type="fvalue"], -.td[data-type="fvalue"] { - flex: 1 1 2em; - text-align: center; -} - -.ifacebadge { - display: inline-flex; - padding: .5rem .8rem; - border-bottom: thin solid #ccc; - background: #eee; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05); -} - -td>.ifacebadge, -.td>.ifacebadge { - font-size: .8rem; - background-color: #f0f0f0; -} - -.ifacebadge>em, -.ifacebadge>img { - display: inline-block; - align-self: flex-start; - margin: 0 .2rem; -} - -.ifacebadge>img+img { - margin: 0 .2rem 0 0; -} - -.network-status-table { - display: flex; - flex-wrap: wrap; -} - -.network-status-table .ifacebox { - flex-grow: 1; - margin: .5em; -} - -.network-status-table .ifacebox-body { - display: flex; - flex-direction: column; - height: 100%; -} - -.network-status-table .ifacebox-body>span { - flex: 10 10 auto; - height: 100%; -} - -.network-status-table .ifacebox-body>div { - display: flex; - flex-wrap: wrap; -} - -.network-status-table .ifacebox-body .ifacebadge { - align-items: center; - flex: 1 1 auto; - min-width: 220px; - margin: .5em 0em 0 0em; - padding: .5em; - background-color: #fff; -} - -/* textarea */ -.cbi-input-textarea { - font-family: monospace; - width: 100%; - font-size: 0.875rem; - min-height: 14rem; - padding: .8rem; - color: #000; -} - -#syslog { - font-size: small; - line-height: 1.25; - overflow-y: hidden; - width: 100%; - min-height: 15rem; - padding: 1rem; - resize: none; - color: #eee; - border: 0; - border-radius: 0.375rem; - background-color: #242424; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); -} - -#syslog:focus { - outline: 0; -} - -/* config changes */ -.uci-change-list { - font-family: monospace; -} - -.uci-change-list ins, -.uci-change-legend-label ins { - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #0f0; - background-color: #cfc; -} - -.uci-change-list del, -.uci-change-legend-label del { - font-style: normal; - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #f00; - background-color: #fcc; -} - -.uci-change-list var, -.uci-change-legend-label var { - font-style: normal; - display: block; - padding: 2px; - text-decoration: none; - border: thin solid #ccc; - background-color: #eee; -} - -.uci-change-list var ins, -.uci-change-list var del { - font-style: normal; - padding: 0; - white-space: pre; - border: 0; -} - -.uci-change-legend { - padding: 5px; -} - -.uci-change-legend-label { - float: left; - width: 150px; -} - -.uci-change-legend-label>ins, -.uci-change-legend-label>del, -.uci-change-legend-label>var { - display: block; - float: left; - width: 10px; - height: 10px; - margin-right: 4px; -} - -.uci-change-legend-label var ins, -.uci-change-legend-label var del { - line-height: .4; - border: 0; -} - -.uci-change-list var, -.uci-change-list del, -.uci-change-list ins { - padding: .5rem; -} - -/* other fix */ -#iwsvg, -#iwsvg2, -#bwsvg { - border: thin solid #d4d4d4 !important; -} - -#iwsvg, -[data-page="admin-status-realtime-bandwidth"] #bwsvg { - border-top: 0 !important; -} - -.ifacebox { - line-height: 1.25; - display: inline-flex; - flex-direction: column; - min-width: 100px; - border-bottom: thin solid #ccc; - background-color: #f9f9f9; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px rgba(0, 0, 0, .2); -} - -.ifacebox-head { - padding: .25em; - background: #eee; -} - -.ifacebox-head.active { - background: #5e72e4; - background: var(--bar-bg); - - * { - color: #fff; - color: var(--white); - } - -} - -.ifacebox-body { - padding: .5em 1rem; - line-height: 1.6em; -} - -.cbi-image-button { - margin-left: .5rem; -} - -.zonebadge { - display: inline-block; - padding: .2rem .5rem; -} - -.zonebadge .ifacebadge { - margin: .1rem .2rem; - padding: .2rem .3rem; - border: thin solid #6c6c6c; -} - -.zonebadge>input[type="text"] { - min-width: 10rem; - margin-top: .3rem; - padding: .16rem 1rem; -} - -.zonebadge>em, -.zonebadge>strong { - display: inline-block; - margin: 0 .2rem; -} - -.cbi-value-field .cbi-input-checkbox, -.cbi-value-field .cbi-input-radio { - margin-top: .1rem; -} - -.cbi-value-field>ul>li { - display: flex; -} - -.cbi-value-field>ul>li>label { - margin-top: .5rem; -} - -.cbi-value-field>ul>li .ifacebadge { - margin-top: -.5rem; - margin-left: .4rem; - background-color: #eee; -} - -.cbi-section-table-row>.cbi-value-field .cbi-dropdown { - min-width: 7rem; -} - -.cbi-section-create { - display: inline-flex; - align-items: center; - margin: 0.25rem 0 0.25rem 1rem; -} - -.cbi-section-create>* { - margin: .5rem; -} - -.cbi-section-remove { - padding: .5rem; -} - -div.cbi-value var, -td.cbi-value-field var, -.td.cbi-value-field var { - font-style: italic; - color: #0069d6; -} - -.cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: thin solid #ccc; -} - -.cbi-dropdown-container { - position: relative; -} - -.cbi-tooltip-container, -span[data-tooltip], -span[data-tooltip] .label { - cursor: help !important; -} - -.cbi-tooltip { - position: absolute; - z-index: 1000; - left: -1000px; - padding: 2px 5px; - transition: opacity .25s ease-out; - white-space: pre; - pointer-events: none; - opacity: 0; - border-radius: 3px; - background: #fff; - box-shadow: 0 0 2px #444; -} - -.cbi-tooltip-container:hover .cbi-tooltip { - left: auto; - transition: opacity .25s ease-in; - opacity: 1; -} - -.zonebadge .cbi-tooltip { - margin: -1.5rem 0 0 -.5rem; - padding: .25rem; - background: inherit; -} - -.zonebadge-empty { - color: #404040; - background: repeating-linear-gradient(45deg, rgba(204, 204, 204, .5), rgba(204, 204, 204, .5) 5px, rgba(255, 255, 255, .5) 5px, rgba(255, 255, 255, .5) 10px); -} - -.zone-forwards { - display: flex; - min-width: 10rem; -} - -.zone-forwards>* { - flex: 1 1 45%; -} - -.zone-forwards>span { - flex-basis: 10%; - padding: 0 .25rem; - text-align: center; -} - -.zone-forwards .zone-src, -.zone-forwards .zone-dest { - display: flex; - flex-direction: column; -} - -.label { - font-size: .8rem; - font-weight: bold; - padding: .3rem .8rem; - white-space: nowrap; - text-decoration: none; - text-transform: uppercase; - color: #fff !important; - border-radius: 3px; - background-color: #bfbfbf; - text-shadow: none; -} - -label>input[type="checkbox"], -label>input[type="radio"] { - position: relative; - top: .4rem; - right: .2rem; - margin: 0; - vertical-align: bottom; -} - -label[data-index][data-depends] { - padding-right: 2em; -} - -.showSide { - display: none; -} - -.darkMask { - position: fixed; - z-index: 99; - display: none; - width: 100%; - height: 100%; - content: ""; - top: 0; - background-color: rgba(0, 0, 0, .56); -} - -/* diagnostics */ -#diag-rc-output>pre, -#command-rc-output>pre, -[data-page="admin-services-wol"] .notice code { - font-size: 1.2rem; - font-size-adjust: .35; - line-height: normal; - display: block; - overflow-y: hidden; - width: 100%; - padding: 8.5px; - white-space: pre; - color: #eee; - background-color: #101010; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); -} - -[data-page="admin-network-diagnostics"] .table { - box-shadow: none; -} - -input[name="ping"], -input[name="traceroute"], -input[name="nslookup"] { - width: 80%; -} - - - -/* fix status */ -.node-status-overview>.main fieldset:nth-child(4) .td:nth-child(2), -.node-status-processes>.main .table .tr .td:nth-child(3) { - white-space: normal; -} - -/* fix system reboot */ -[data-page="admin-system-reboot"] p { - padding-left: 1.5rem; -} - -[data-page="admin-system-reboot"] .cbi-button { - background: #fb6340 !important; -} - -[data-page="admin-system-reboot"] p>span { - position: relative; - top: .1rem; - left: 1rem; -} - -[data-page="admin-vpn-passwall"] h4 { - background: transparent; -} - -/* samba */ -#cbi-samba [data-tab="template"] .cbi-value-field { - display: block; -} - -#cbi-samba [data-tab="template"] .cbi-value-title { - width: auto; - padding-bottom: .6rem; -} - -/* admin-system-admin-password */ -[data-page="admin-system-admin"] .cbi-map h2, -[data-page="admin-system-admin-password"] .cbi-map h2, -[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, -[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { - margin-left: 0; - color: #32325d; - color: var(--gray-dark); -} - - -/* software */ -[data-page="admin-system-opkg"] h2 { - margin-left: 0; - color: #32325d; - color: var(--gray-dark); -} - -.controls { - margin: .5em 1rem 1em 1rem !important; -} - -.controls>*>.btn:not([aria-label$="page"]) { - flex-grow: initial !important; - margin-top: .25rem; -} - -.controls>#pager>.btn[aria-label$="page"] { - font-size: 1.4rem; - font-weight: bold; -} - -.controls>*>label { - margin-bottom: .2rem; -} - -[data-page="admin-system-opkg"] div.btn { - line-height: 3; - display: inline; - padding: .3rem .6rem; -} - -[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), -[data-page="admin-system-opkg"] #maincontent>.container { - margin-top: 2rem; - padding-top: .1rem; -} - -[data-page="admin-system-opkg"] #maincontent>.container { - margin: 0 1.25rem 1rem 1.25rem; - margin-bottom: 1rem; -} - -.td.version, -.td.size { - white-space: normal !important; - word-break: break-word; -} - -.cbi-tabmenu+.cbi-section { - margin-top: 0; -} - -/* admin-system-crontab*/ -[data-page="admin-system-crontab"] #view p { - margin-bottom: 1rem; -} - -/*admin-system-flash*/ - -[data-page="admin-system-flash"] { - .cbi-value { - padding: 0; - } - - .cbi-section { - .cbi-section { - margin-top: 0; - } - } - - .cbi-map-tabbed { - border-radius: 0.375rem; - } - - legend { - display: block !important; - font-size: 1.2rem; - width: 100%; - display: block; - margin-bottom: 0; - padding: 1rem 0 1rem 1.5rem; - border-bottom: 1px solid rgba(0, 0, 0, .05); - line-height: 1.5; - margin-bottom: 0rem; - letter-spacing: 0.1rem; - color: #32325d; - font-weight: bold; - } - - .cbi-section-descr { - font-weight: 600; - padding: 1rem 0 1rem 1.5rem; - color: #525f7f; - } - - .modal { - - - label>input[type="checkbox"] { - top: -0.35rem; - } - - .btn { - white-space: normal !important; - } - } -} - -/* wireless overview */ -#cbi-wireless>#wifi_assoclist_table>.tr { - box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; -} - -#cbi-wireless>#wifi_assoclist_table>.tr.placeholder>.td { - right: 33px; - bottom: 33px; - left: 33px; - border-top: thin solid #ddd !important; -} - -#cbi-wireless>#wifi_assoclist_table>.tr.table-titles { - box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; -} - -#cbi-wireless>#wifi_assoclist_table>.tr.table-titles>.th { - border-bottom: thin solid #ddd; - box-shadow: 0 -1px 0 0 #ddd; -} - -#wifi_assoclist_table>.tr>.td[data-title="RX Rate / TX Rate"] { - width: 23rem; -} - -[data-page="admin-network-dhcp"] .cbi-value { - padding: 0; - -} - -[data-page="admin-network-dhcp"] [data-tab-active="true"] { - padding: 1rem 0 !important; -} - -/* firewall */ -#iptables { - margin: 0; -} - -.Firewall form { - margin: 2rem 2rem 0 0; - padding: 0; - box-shadow: none; -} - -#cbi-firewall-redirect table *, -#cbi-network-switch_vlan table *, -#cbi-firewall-zone table * { - font-size: small; -} - -#cbi-firewall-redirect table input[type="text"], -#cbi-network-switch_vlan table input[type="text"], -#cbi-firewall-zone table input[type="text"] { - width: 5rem; -} - -#cbi-firewall-redirect table select, -#cbi-network-switch_vlan table select, -#cbi-firewall-zone table select { - min-width: 3.5rem; -} - -#cbi-network-switch_vlan .th, -#cbi-network-switch_vlan .td { - flex-basis: 12%; -} - -#cbi-firewall-zone .table, -#cbi-network-switch_vlan .table { - display: block; -} - -#cbi-firewall-zone .td, -#cbi-network-switch_vlan .td { - width: 100%; -} - -[data-page="admin-network-firewall-custom"] #view p, -[data-page="admin-status-routes"] #view p { - padding: 0 1.5rem; - margin-bottom: 1rem; - - textarea { - padding: 1rem; - border-radius: 0.375rem; - } -} - -/* applyreboot fix */ -#applyreboot-container { - margin: 2rem; -} - -#applyreboot-section { - line-height: 300%; - margin: 2rem; -} - -/* openvpn bug fix */ -.OpenVPN a { - line-height: initial !important; -} - -/* custom commands */ -.commandbox { - width: 24% !important; - margin: 10px 0 0 10px !important; - padding: .5rem 1rem; - border-bottom: thin solid #ccc; - background: #eee; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05); -} - -.commandbox h3 { - line-height: normal !important; - overflow: hidden; - margin: 6px 0 !important; - white-space: nowrap; - text-overflow: ellipsis; -} - -.commandbox div { - left: auto !important; -} - -.commandbox code { - position: absolute; - overflow: hidden; - max-width: 60%; - margin-left: 4px; - padding: 2px 3px; - white-space: nowrap; - text-overflow: ellipsis; -} - -.commandbox code:hover { - overflow-y: auto; - max-height: 50px; - white-space: normal; -} - -.commandbox p:first-of-type { - margin-top: -6px; -} - -.commandbox p:nth-of-type(2) { - margin-top: 2px; -} - -[data-page^="admin-system-commands"] .panel-title, -[data-page^="command-cfg"] .mobile-hide, -[data-page^="command-cfg"] .showSide { - display: none; -} - -#command-rc-output .alert-message { - line-height: 1.42857143; - position: absolute; - top: 40px; - right: 32px; - max-width: 40%; - margin: 0; - animation: anim-fade-in 1.5s forwards; - word-break: break-word; - opacity: 0; -} - -@keyframes anim-fade-in { - 100% { - opacity: 1; - } -} - -/* other fix */ -input[type="checkbox"] { - appearance: none !important; - -webkit-appearance: none !important; - border: 1px solid #dee2e6; - - width: 16px !important; - height: 16px !important; - padding: 0; - cursor: pointer; - transition: all 0.2s; - margin: 1rem 0 0 0; -} - -input[type="checkbox"]:checked { - border: 1px solid #5e72e4; - background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; - background-color: #5e72e4; - background-size: 70%; - background-repeat: no-repeat; - background-position: center; -} - -.fb-container .cbi-button { - height: auto !important; -} - -#cbi-usb_printer-printer em { - display: block; - padding: 1rem; - text-align: center; -} - -pre.command-output { - padding: 1.5rem; -} - -[data-page="admin-nlbw-display"] .cbi-section[data-tab="export"] { - padding: 1.5rem !important; -} - -[data-page="admin-nlbw-backup"] form { - padding-left: 1.5rem; -} - -[data-page="admin-status-iptables"] .right { - margin-bottom: 0 !important; -} - -/* IE hacks */ -@media all and (-ms-high-contrast: none) { - .main>.main-left>.nav>.slide>.menu::before { - top: 30.25%; - } - - .main>.main-left>.nav>li:last-child::before { - top: 20%; - } - - .showSide::before { - top: -12px; - } -} - -@media screen and (max-width: 1600px) { - header>.fill>.container>#logo { - margin: 0 2.5rem 0 .5rem; - } - - .main-left { - width: calc(0% + 13rem); - } - - .main-right { - width: calc(100% - 13rem); - } - - .btn:not(button), - .cbi-button { - font-size: .8rem; - } - - .label { - padding: .2rem .6rem; - } - - - .cbi-value-title { - width: 15rem; - padding-right: .6rem; - } - - .cbi-value-field .cbi-dropdown, - .cbi-value-field .cbi-input-select, - .cbi-value input[type="text"], - .cbi-value input[type="password"] { - min-width: 18rem; - } - - #cbi-firewall-zone .cbi-input-select { - min-width: 9rem; - } - - .cbi-input-textarea { - font-size: small; - } - - .node-admin-status>.main fieldset li>a { - padding: .3rem .6rem; - } -} - -@media screen and (max-width: 1366px) { - - - header>.fill>.container { - - cursor: default; - } - - - - .main-left { - width: calc(0% + 13rem); - } - - .main-right { - width: calc(100% - 13rem); - } - - - .tabs>li>a, - .cbi-tabmenu>li>a { - padding: .2rem .8rem; - } - - .panel-title { - font-size: 1.1rem; - padding-bottom: 1rem; - } - - table { - font-size: .7rem !important; - width: 100% !important; - } - - .table .cbi-input-text { - width: 100%; - } - - .cbi-value-field .cbi-dropdown, - .cbi-value-field .cbi-input-select, - .cbi-value input[type="text"], - .cbi-value input[type="password"] { - min-width: 16rem; - } - - #cbi-firewall-zone .cbi-input-select { - min-width: 4rem; - } - - .main>.main-left>.nav>li, - .main>.main-left>.nav>li a, - .main>.main-left>.nav>.slide>.menu, - .main>.main-left>.nav>li>[data-title="Logout"] { - font-size: .9rem; - } - - .main>.main-left>.nav>.slide>.slide-menu>li>a { - font-size: .7rem; - } - - #modal_overlay { - top: 0rem; - } - - [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { - display: block; - } - - [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), - [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), - [data-page="admin-network-hosts"] .table, - [data-page="admin-network-routes"] .table { - overflow-y: visible; - } - - .commandbox { - width: 32% !important; - } - - .btn:not(button), - .cbi-button { - font-size: 0.8rem; - - } -} - -@media screen and (max-width: 1152px) { - header>.fill>.container>#logo { - display: none; - } - - header>.fill>.container>.brand { - position: relative; - } - - html, - .main { - overflow-y: visible; - } - - .main>.loading>span { - top: 25%; - } - - .main-left { - width: calc(0% + 13rem); - } - - .main-right { - width: calc(100% - 13rem); - } - - - - body:not(.logged-in) .showSide { - visibility: hidden; - width: 0; - margin: 0; - } - - .node-main-login>.main .cbi-value-title { - text-align: left; - } - - .cbi-value-title { - width: 12rem; - padding-right: 1rem; - } - - .cbi-value-field .cbi-dropdown, - .cbi-value-field .cbi-input-select, - .cbi-value input[type="text"] { - width: 16rem; - min-width: 16rem; - } - - /*.cbi-value input[type="password"],*/ - .cbi-value input[name^="pw"], - .cbi-value input[data-update="change"]:nth-child(2) { - width: 13rem !important; - min-width: 13rem; - } - - #diag-rc-output>pre, - #command-rc-output>pre, - [data-page="admin-services-wol"] .notice code { - font-size: 1rem; - } - - .table { - display: block; - } - - .Interfaces .table { - overflow-x: hidden; - } - - #packages.table { - display: grid; - } - - .tr { - display: flex; - flex-direction: row; - flex-wrap: wrap; - } - - .Overview .table[width="100%"]>.tr { - flex-wrap: nowrap; - } - - .tr.placeholder { - border-bottom: thin solid #ddd; - } - - .tr.placeholder>.td, - #cbi-firewall .tr>.td, - #cbi-network .tr:nth-child(2)>.td, - .cbi-section #wifi_assoclist_table .tr>.td { - border-top: 0; - } - - .th, - .td { - display: inline-block; - align-self: flex-start; - flex: 2 2 10%; - text-overflow: ellipsis; - word-wrap: break-word; - } - - .td select, - .td input[type="text"] { - width: 100%; - word-wrap: normal; - } - - .td [data-dynlist]>input, - .td input.cbi-input-password { - width: calc(100% - 1.5rem); - } - - .td[data-type="button"], - .td[data-type="fvalue"] { - flex: 1 1 12.5%; - text-align: left; - } - - .th.cbi-value-field, - .td.cbi-value-field, - .th.cbi-section-table-cell, - .td.cbi-section-table-cell { - flex-basis: auto; - padding-top: 1rem; - } - - .cbi-section-table-row { - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-between; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); - } - - .td.cbi-value-field, - .cbi-section-table-cell { - display: inline-block; - flex: 10 10 auto; - flex-basis: 50%; - text-align: center; - } - - .td.cbi-section-actions { - vertical-align: bottom; - } - - .tr.table-titles, - .tr.cbi-section-table-titles, - .tr.cbi-section-table-descr { - display: none; - } - - .tr[data-title]::before, - .tr.cbi-section-table-titles.named::before { - font-size: .9rem; - display: block; - flex: 1 1 100%; - border-bottom: thin solid rgba(0, 0, 0, .26); - background: #e9ecef; - } - - .td[data-title], - [data-page^="admin-status-realtime"] .td[id] { - text-align: left; - } - - .td[data-title]::before { - display: block; - } - - .cbi-button+.cbi-button { - margin-left: 0; - } - - .td.cbi-section-actions>*>*, - .td.cbi-section-actions>*>form>* { - margin: 2.1px 3px; - } - - .Firewall form { - position: static !important; - margin: 0 0 2rem 0; - padding: 2rem; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); - } - - .Firewall form input { - width: 100% !important; - margin: 0; - margin-top: 1rem; - } - - .Firewall .center, - .Firewall .center::before { - text-align: left !important; - } - - .commandbox { - width: 100% !important; - margin-left: 0 !important; - } - - .btn:not(button), - .cbi-button { - font-size: 0.8rem; - } -} - - - - -@media screen and (max-width: 768px) { - body { - font-size: .8rem; - } - - .cbi-progressbar::after { - font-size: .5rem; - line-height: 1.5; - } - - - - .main-left { - position: fixed; - z-index: 100; - width: 0; - } - - .main-right { - width: 100%; - } - - .showSide { - padding: 0.1rem; - position: relative; - z-index: 99; - display: inline-block !important; - - &::before { - font-family: 'argon' !important; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\e20e"; - font-size: 1.7rem; - } - } - - - header>.fill>.container>.brand { - display: inline-block; - } - - .main>.main-left>.nav>.slide>.menu, - .main>.main-left>.nav>li>[data-title="Logout"] { - font-size: 1.2rem; - } - - .main>.main-left>.nav>.slide>.slide-menu>li>a { - font-size: 0.8rem; - } - - - -} - -@media screen and (max-width: 600px) { - .mobile-hide { - display: none; - } - - #maincontent>.container { - margin: 0 1rem 1rem 1rem; - } - - .cbi-value-title { - text-align: left; - } - - [data-page="admin-system-flash"] legend { - padding: 1rem 0 1rem 1rem; - - } - - [data-page="admin-system-flash"] .cbi-section-descr { - padding: 1rem 0 1rem 1rem; - - } - - [data-page="admin-system-flash"] .cbi-value { - padding: 0 1rem; - } - - [data-page="admin-network-dhcp"] [data-tab-active="true"] { - padding: 1rem 1rem !important; - } - - .cbi-dynlist p { - padding: 0.5rem 1rem; - } - - body { - overflow-x: hidden; - } - - .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { - width: 16rem; - } - - .node-main-login footer { - display: none; - } - - .tabs, - .cbi-tabmenu { - &::-webkit-scrollbar { - width: 0px; - height: 0px; - } - } - - .cbi-value-field, - .cbi-value-description { - display: block !important; - padding-left: 0 !important; - padding-right: 0 !important; - } - - [data-page="admin-system-admin-password"] .cbi-value-field { - display: table-cell !important; - } - - .modal.cbi-modal { - max-width: 100%; - max-height: none; - } - - .modal { - display: flex; - align-items: center; - flex-wrap: wrap; - width: 100%; - min-width: 270px; - max-width: 600px; - min-height: 32px; - margin: 5em auto; - padding: 1em; - border-radius: 3px !important; - background: #fff; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); - } - - .cbi-dropdown[open]>ul.dropdown { - left: 0.2rem !important; - right: 0 !important; - margin-bottom: 1rem; - } -} - - - -@media screen and (min-width: 600px) { - ::-webkit-scrollbar { - width: 10px; - height: 10px; - } - - ::-webkit-scrollbar, - ::-webkit-scrollbar-corner { - background: transparent; - } - - ::-webkit-scrollbar-thumb { - background: #9e9e9e; - } - - ::-webkit-scrollbar-thumb:hover { - background: #757575; - } - - ::-webkit-scrollbar-thumb:active { - background: #424242; - } - - - - -} - - - -@media screen and (max-width: 480px) { - .mobile-hide { - display: none; - } - - .login-page .login-container { - margin-left: 0rem !important; - width: 100%; - - .login-form { - .form-login { - .input-group { - &::before { - color: #525461; - } - - input { - color: #525461; - border-bottom: white 1px solid; - border-bottom: var(--white) 1px solid; - border-radius: 0; - } - - } - } - } - - } - - -} - -@media (prefers-color-scheme: dark) { - body { - background: #1e1e1e; - color: #cccccc; - } - - .login-page .login-container { - - .login-form { - background-color: #1e1e1e; - - .brand { - color: #adb5bd; - } - - .form-login { - .input-group { - &::before { - color: #adb5bd; - } - - input { - background-color: transparent !important; - color: #adb5bd; - border-bottom: #adb5bd 1px solid !important; - border-radius: 0 !important; - border-top: none !important; - border-left: none !important; - border-right: none !important; - box-shadow: none; - } - - } - - .cbi-button-apply { - background-image: linear-gradient(-135deg, #6c61ab 0%, #594ca9 100%); - - &:hover, - &:focus { - background-image: linear-gradient(-135deg, rgb(85, 76, 138) 0%, rgb(72, 61, 139) 100%); - } - } - } - } - - } - - header::after { - background-color: #1e1e1e !important; - } - - - .main { - .main-left { - - background-color: #333333 !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .15); - - .sidenav-header .brand { - color: #ccc; - } - - .nav { - .slide { - .slide-menu { - .active { - a { - color: #cccccc; - - &::after { - background-color: #cccccc !important; - } - } - } - - li { - a { - color: #cccccc; - } - - a:hover { - background: none !important; - } - } - } - - .menu.active { - background-color: darkslateblue !important; - color: #cccccc !important; - - a::after { - background-color: #cccccc !important; - } - } - } - - li { - a { - color: #cccccc !important; - } - - a:hover { - background-color: darkslateblue !important; - color: #cccccc !important; - - - } - } - } - - - &::-webkit-scrollbar-thumb { - background-color: #252526 !important; - } - - &::-webkit-scrollbar-track { - background-color: #333; - } - } - - .main-right { - background-color: #1e1e1e; - } - } - - h2 { - color: #ccc; - background: #333333; - } - - h3 { - color: #ccc; - border-bottom: 0; - background: #333333; - } - - a:-webkit-any-link { - color: -webkit-link; - cursor: pointer; - color: darkslateblue; - } - - - input:-webkit-autofill { - background-color: #3c3c3c !important; - } - - .cbi-value-field .cbi-input-apply, - .cbi-button-apply, - .cbi-button-edit { - color: #fff !important; - background-color: darkslateblue !important; - border-color: darkslateblue !important; - } - - - .cbi-section em { - color: #ccc; - } - - - - header.bg-primary { - background-color: #1e1e1e !important; - } - - - - .cbi-map-descr { - color: #ccc; - } - - .cbi-section { - background: none; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) - } - - .panel-title { - color: #ccc; - background-color: #333333; - border-bottom: 0px; - } - - div>table>tbody>tr:nth-of-type(2n), - div>.table>.tr:nth-of-type(2n) { - background-color: #252526; - } - - table>tbody>tr>td, - table>tfoot>tr>td, - table>thead>tr>td { - color: #ccc; - } - - fieldset>table>tbody>tr:nth-of-type(2n) { - background-color: #252526; - } - - table>tbody>tr>td, - table>tfoot>tr>td, - table>thead>tr>td { - border-top: 1px solid #252526; - } - - #swaptotal>div>div, - #swapfree>div>div, - #memfree>div>div, - #membuff>div>div, - #conns>div>div, - #memtotal>div>div { - background-color: #32325d !important; - } - - #swaptotal>div>div>div>small, - #swapfree>div>div>div>small, - #memfree>div>div>div>small, - #membuff>div>div>div>small, - #conns>div>div>div>small, - #memtotal>div>div>div>small { - - color: #ccc !important; - } - - .node-system-packages>.main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; - - div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - background-color: transparent !important; - - div { - background-color: #32325d !important; - } - } - - } - - - table>tbody>tr>th, - table>tfoot>tr>th, - table>thead>tr>th { - - background-color: #252526; - border-bottom: black 1px solid !important; - } - - tr>td, - tr>th, - .tr>.td, - .tr>.th, - .cbi-section-table-row::before, - #cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) { - border-top: 0; - } - - .cbi-rowstyle-2 { - background-color: #1e1e1e; - } - - .cbi-rowstyle-1 { - background-color: #252526; - } - - .cbi-section>h3:first-child, - .panel-title, - h3 { - color: #ccc; - border-bottom: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - } - - h4 { - background-color: #1e1e1f; - } - - .cbi-progressbar { - position: relative; - min-width: 170px; - height: 20px; - margin: 6px 0; - border: thin solid #999; - background: transparent; - border-radius: 0.2rem; - overflow: hidden; - - div { - background-color: #32325d !important; - } - } - - .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - background-color: #1e1e1f; - } - - .cbi-button { - color: #ccc !important; - background-color: darkslateblue; - } - - .cbi-section-node { - background: none; - border-radius: 0 0 .375rem .375rem; - padding: 0rem; - } - - abbr { - color: #5e72e4; - - } - - div>table>tbody>tr:nth-of-type(2n), - div>.table>.tbody>.tr:nth-of-type(2n) { - background-color: #252526; - } - - #content_syslog { - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) - } - - #syslog { - color: #ccc; - background-color: #1e1e1e; - } - - #iwsvg, - #iwsvg2, - #bwsvg { - overflow: hidden; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - background-color: #1e1e1e !important; - } - - .tabs { - background-color: #252526; - } - - .tabs>li[class~="active"]>a { - color: #ccc; - } - - .tabs>li[class~="active"], - .tabs>li:hover { - border-bottom: 0.18751rem solid darkslateblue; - color: #ccc; - background-color: #181819; - } - - .cbi-tabmenu>li>a, - .tabs>li>a { - color: #ccc; - - &:hover { - color: #ccc; - } - } - - .cbi-tabmenu>li { - background: #2d2d2d; - } - - .cbi-tabmenu li[class~="cbi-tab"] a { - color: #ccc; - } - - .cbi-tabmenu>li:hover { - color: #ccc; - background: #2d2d2d; - } - - .cbi-tabmenu>li[class~="cbi-tab"] { - background-color: #181819; - } - - .cbi-tabcontainer>.cbi-value:nth-of-type(2n) { - background-color: #252526; - } - - .cbi-value-title { - color: #ccc; - } - - select, - input { - color: #ccc; - background-color: transparent !important; - border: 1px solid #252526; - box-shadow: none; - } - - select:not([multiple="multiple"]):focus, - input:focus { - border-color: darkslateblue !important; - outline: 0; - - } - - select { - background-color: #1e1e1e !important; - } - - #cbi-dropbear h2, - #cbi-dropbear .cbi-map-descr, - #cbi-dropbear .cbi-map-descr abbr, - #cbi-rc h2, - #cbi-rc .cbi-map-descr, - #cbi-distfeedconf h2, - #cbi-distfeedconf .cbi-map-descr, - #cbi-customfeedconf h2, - #cbi-customfeedconf .cbi-map-descr, - #cbi-download h2, - #cbi-filelist h2 { - color: #ccc !important; - } - - .cbi-value-field>ul>li .ifacebadge { - background-color: #3c3c3c; - } - - .cbi-section-descr { - color: #ccc; - } - - .cbi-input-textarea { - background-color: #1e1e1e; - color: #ccc; - } - - - - .cbi-section-remove:nth-of-type(2n), - .cbi-section-node:nth-of-type(2n) { - background-color: #1e1e1e; - } - - .node-system-packages>.main table tr td:nth-last-child(1) { - color: #ccc; - - } - - .cbi-section-node .cbi-value { - padding: 1rem 1rem 0.3rem 1rem; - } - - .ifacebox { - background-color: none; - border: 1px solid #1e1e1e; - } - - .ifacebox-head { - color: #666; - } - - .ifacebox-body { - background-color: #333; - } - - .zonebadge strong { - color: #333; - } - - .zonebadge>.ifacebadge { - background-color: #3c3c3c; - } - - div.cbi-value var, - td.cbi-value-field var { - color: #5e72e4; - } - - #diag-rc-output>pre { - color: #ccc; - background-color: #1e1e1e; - } - - .node-services-vssr .block { - background-color: #3c3c3c !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - } - - .node-services-vssr .block h4 { - color: #ccc !important; - } - - .node-services-vssr .status-bar { - color: #ccc; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - background-color: #1e1e1e; - } - - .node-services-vssr .cbi-section-table-row { - color: #ccc; - background-color: #3c3c3c !important; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, .35) - } - - .node-services-vssr .cbi-section-table-row.fast { - background: darkslateblue !important; - color: #fff; - } - - .node-services-vssr .ssr-button { - color: #ccc; - - } - - .node-services-vssr .incon:nth-child(2) { - border-right: #1e1e1e 1px solid; - } - - #xhr_poll_status>.label.success { - color: #ccc !important; - - background-color: darkolivegreen !important; - } - - .notice { - background-color: darkslateblue !important; - } - - .cbi-input-find, - .cbi-input-save, - .cbi-button-add, - .cbi-button-save, - .cbi-button-find, - .cbi-input-reload, - .cbi-button-reload { - color: #fff !important; - background-color: darkseagreen !important; - border-color: darkseagreen !important; - } - - .cbi-button-reset, - .cbi-input-remove { - color: #fff !important; - background-color: darkorange !important; - border-color: darkorange !important; - } - - .cbi-page-actions .cbi-button-apply, - .cbi-section-actions .cbi-button-edit, - .cbi-button-edit.important, - .cbi-button-apply.important, - .cbi-button-reload.important, - .cbi-button-action.important { - border: 1px darkslateblue solid !important; - } - - - - fieldset[id^="cbi-apply-"] { - background-color: #333333; - } - - #detail-bubble>div { - border: 1px solid #ccc; - border-radius: 2px; - padding: 5px; - background: #252525; - } - - .ifacebox-head.active { - background-color: #32325d !important; - } - - header .fill .status span[data-style="active"] { - color: #ccc !important; - background-color: darkolivegreen !important; - } - - #cbi-wireless .td, - #cbi-network .tr:first-child>.td, - .table[width="100%"]>.tr:first-child>.td, - [data-page="admin-network-diagnostics"] .tr>.td, - .tr.table-titles>.th, - .tr.cbi-section-table-titles>.th { - background-color: #252526; - border-bottom: black 1px solid !important; - - } - - .network-status-table .ifacebox-body .ifacebadge { - background-color: #252526; - border-bottom: 0; - box-shadow: none; - } - - td>.ifacebadge, - .td>.ifacebadge { - - background-color: darkslateblue; - border: 0; - } - - .btn.danger, - .cbi-section-remove>.cbi-button, - .cbi-button-remove, - .cbi-button-reset, - .cbi-button-negative, - .cbi-button[value="Stop"], - .cbi-button[value="Kill"], - .cbi-button[onclick="reboot(this)"], - .cbi-button-neutral[value="Restart"] { - border: thin solid darkorange !important; - background-color: darkorange !important; - } - - .cbi-section, - .cbi-section-error, - #iptables, - .Firewall form, - #cbi-network>.cbi-section-node, - #cbi-wireless>.cbi-section-node, - #cbi-wireless>#wifi_assoclist_table, - [data-tab-title], - [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), - [data-page="admin-system-opkg"] #maincontent>.container { - background: #1e1e1e !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); - } - - div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { - background: transparent !important; - } - - [data-page="admin-system-admin"] .cbi-map h2, - [data-page="admin-system-admin-password"] .cbi-map h2, - [data-page="admin-system-admin"] .cbi-map .cbi-map-descr, - [data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { - color: #ccc; - } - - [data-page="admin-system-flash"] { - .modal { - label>input[type="checkbox"] { - top: -0.35rem; - } - - .btn { - white-space: normal !important; - background-color: darkseagreen; - } - - .alert-message { - background-color: transparent !important; - } - - .danger { - border: thin solid darkorange !important; - background-color: darkorange !important; - } - } - } - - .cbi-value input[type="password"]+.cbi-button-neutral { - background-color: darkslateblue !important; - } - - .btn, - button, - select, - input, - .cbi-dropdown { - border: 1px solid #3c3c3c !important; - } - - - .cbi-dropdown .preview { - color: #ccc; - } - - .cbi-section-table-row { - background-color: #1e1e1e !important; - } - - .modal { - background-color: #1e1e1e; - } - - .cbi-button-positive { - color: #fff !important; - background-color: darkseagreen !important; - } - - [data-page="admin-system-flash"] legend { - color: #ccc; - } - - .logout:before { - color: #adb5bd !important; - } - - .cbi-dropdown[open] { - border-color: darkslateblue !important; - } - - .cbi-dropdown[open]>ul.dropdown { - background: #252526 !important; - color: #ccc !important; - box-shadow: none; - border: 1px solid #3c3c3c !important; - - - } - - .cbi-dropdown[open]>ul.dropdown li { - color: #ccc; - border-bottom: 1px solid #3c3c3c !important; - } - - .cbi-dropdown[open]>ul.dropdown>li[selected] { - background-color: darkslateblue !important; - border-bottom: 1px solid #3c3c3c !important; - } - - .cbi-dropdown[open]>ul.dropdown>li.focus { - background: darkslateblue; - outline: none; - } - - .ifacebadge { - background-color: #333333; - } - - .cbi-dynlist>.item>span { - border: 1px solid #3c3c3c !important; - } - - .cbi-page-actions .cbi-button-apply, - .cbi-section-actions .cbi-button-edit, - .cbi-button-edit, - .cbi-button-apply, - .cbi-button-reload, - .cbi-button-action, - .cbi-button[value="Submit"], - .cbi-button[value="Upload"], - .cbi-button[value$="Apply"], - .cbi-button[onclick="addKey(event)"] { - background: darkslateblue !important; - } - - .btn.primary, - .cbi-page-actions .cbi-button-save, - .cbi-page-actions .cbi-button-apply+.cbi-button-save, - .cbi-button-add, - .cbi-button-save, - .cbi-button-positive, - .cbi-button-link, - .cbi-button[value="Enable"], - .cbi-button[value="Scan"], - .cbi-button[value^="Back"], - .cbi-button-neutral[onclick="handleConfig(event)"] { - background: darkslateblue !important; - } - - [data-page="admin-system-opkg"] h2 { - - color: #ccc !important; - } - - @supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius-dark)); - backdrop-filter: blur(var(--blur-radius-dark)); - background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); - - } - } -} - -@media (prefers-color-scheme: dark) and (max-width: 480px) { - .node-status-iptables>.main div>.cbi-map>form { - background-color: #1e1e1e; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - } - - -} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/less/dark.less b/luci-theme-argon/htdocs/luci-static/argon/less/dark.less deleted file mode 100644 index c1285dd4a..000000000 --- a/luci-theme-argon/htdocs/luci-static/argon/less/dark.less +++ /dev/null @@ -1,808 +0,0 @@ -/** - * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template - * - * luci-theme-argon - * Copyright 2020 Jerryk - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/jerrykuku/luci-theme-argon/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * luci-theme-material: - * https://github.com/LuttyYang/luci-theme-material/ - * - * Agron Theme - * https://demos.creative-tim.com/argon-dashboard/index.html - * - * Login background - * https://unsplash.com/ - * - * Licensed to the public under the Apache License 2.0 - */ - -body { - background: #1e1e1e; - color: #cccccc; -} - -.login-page .login-container { - - .login-form { - background-color: #1e1e1e; - - .brand { - color: #adb5bd; - } - - .form-login { - .input-group { - &::before { - color: #adb5bd; - } - - input { - background-color: transparent !important; - color: #adb5bd; - border-bottom: #adb5bd 1px solid !important; - border-radius: 0 !important; - border-top: none !important; - border-left: none !important; - border-right: none !important; - box-shadow: none; - } - - } - - .cbi-button-apply { - background-image: linear-gradient(-135deg, #6c61ab 0%, #594ca9 100%); - - &:hover, - &:focus { - background-image: linear-gradient(-135deg, rgb(85, 76, 138) 0%, rgb(72, 61, 139) 100%); - } - } - } - } - -} - -header::after { - background-color: #1e1e1e !important; -} - - -.main { - .main-left { - - background-color: #333333 !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .15); - - .sidenav-header .brand { - color: #ccc; - } - - .nav { - .slide { - .slide-menu { - .active { - a { - color: #cccccc; - - &::after { - background-color: #cccccc !important; - } - } - } - - li { - a { - color: #cccccc; - } - - a:hover { - background: none !important; - } - } - } - - .menu.active { - background-color: darkslateblue !important; - color: #cccccc !important; - - a::after { - background-color: #cccccc !important; - } - } - } - - li { - a { - color: #cccccc !important; - } - - a:hover { - background-color: darkslateblue !important; - color: #cccccc !important; - } - } - } - - - &::-webkit-scrollbar-thumb { - background-color: #252526 !important; - } - - &::-webkit-scrollbar-track { - background-color: #333; - } - } - - .main-right { - background-color: #1e1e1e; - } -} - -h2 { - color: #ccc; - background: #333333; -} - -h3 { - color: #ccc; - border-bottom: 0; - background: #333333; -} - -a:-webkit-any-link { - color: -webkit-link; - cursor: pointer; - color: darkslateblue; -} - - -input:-webkit-autofill { - background-color: #3c3c3c !important; -} - -.cbi-value-field .cbi-input-apply, -.cbi-button-apply, -.cbi-button-edit { - color: #fff !important; - background-color: darkslateblue !important; - border-color: darkslateblue !important; -} - - -.cbi-section em { - color: #ccc; -} - -header.bg-primary { - background-color: #1e1e1e !important; -} - -.cbi-map-descr { - color: #ccc; -} - -.cbi-section { - background: none; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) -} - -.panel-title { - color: #ccc; - background-color: #333333; - border-bottom: 0px; -} - -div>table>tbody>tr:nth-of-type(2n), -div>.table>.tr:nth-of-type(2n) { - background-color: #252526; -} - -table>tbody>tr>td, -table>tfoot>tr>td, -table>thead>tr>td { - color: #ccc; -} - -fieldset>table>tbody>tr:nth-of-type(2n) { - background-color: #252526; -} - -table>tbody>tr>td, -table>tfoot>tr>td, -table>thead>tr>td { - border-top: 1px solid #252526; -} - -#swaptotal>div>div, -#swapfree>div>div, -#memfree>div>div, -#membuff>div>div, -#conns>div>div, -#memtotal>div>div { - background-color: #32325d !important; -} - -#swaptotal>div>div>div>small, -#swapfree>div>div>div>small, -#memfree>div>div>div>small, -#membuff>div>div>div>small, -#conns>div>div>div>small, -#memtotal>div>div>div>small { - - color: #ccc !important; -} - -.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last { - line-height: 1.8em; - - div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { - border: 1px solid #999999 !important; - background-color: transparent !important; - - div { - background-color: #32325d !important; - } - } - -} - -table>tbody>tr>th, -table>tfoot>tr>th, -table>thead>tr>th { - - background-color: #252526; - border-bottom: black 1px solid !important; -} - -tr>td, -tr>th, -.tr>.td, -.tr>.th, -.cbi-section-table-row::before, -#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) { - border-top: 0; -} - -.cbi-rowstyle-2 { - background-color: #1e1e1e; -} - -.cbi-rowstyle-1 { - background-color: #252526; -} - -.cbi-section>h3:first-child, -.panel-title, -h3 { - color: #ccc; - border-bottom: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -h4 { - background-color: #1e1e1f; -} - -.cbi-progressbar { - position: relative; - min-width: 170px; - height: 20px; - margin: 6px 0; - border: thin solid #999; - background: transparent; - border-radius: 0.2rem; - overflow: hidden; - - div { - background-color: #32325d !important; - } -} - -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - background-color: #1e1e1f; -} - -.cbi-button { - color: #ccc !important; - background-color: darkslateblue; -} - -.cbi-section-node { - background: none; - border-radius: 0 0 .375rem .375rem; - padding: 0rem; -} - -abbr { - color: #5e72e4; -} - -div>table>tbody>tr:nth-of-type(2n), -div>.table>.tbody>.tr:nth-of-type(2n) { - background-color: #252526; -} - -#content_syslog { - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) -} - -#syslog { - color: #ccc; - background-color: #1e1e1e; -} - -#iwsvg, -#iwsvg2, -#bwsvg { - overflow: hidden; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - background-color: #1e1e1e !important; -} - -.tabs { - background-color: #252526; -} - -.tabs>li[class~="active"]>a { - color: #ccc; -} - -.tabs>li[class~="active"], -.tabs>li:hover { - border-bottom: 0.18751rem solid darkslateblue; - color: #ccc; - background-color: #181819; -} - -.cbi-tabmenu>li>a, -.tabs>li>a { - color: #ccc; - - &:hover { - color: #ccc; - } -} - -.cbi-tabmenu>li { - background: #2d2d2d; -} - -.cbi-tabmenu li[class~="cbi-tab"] a { - color: #ccc; -} - -.cbi-tabmenu>li:hover { - color: #ccc; - background: #2d2d2d; -} - -.cbi-tabmenu>li[class~="cbi-tab"] { - background-color: #181819; -} - -.cbi-tabcontainer>.cbi-value:nth-of-type(2n) { - background-color: #252526; -} - -.cbi-value-title { - color: #ccc; -} - -select, -input { - color: #ccc; - background-color: transparent !important; - border: 1px solid #252526; - box-shadow: none; -} - -select:not([multiple="multiple"]):focus, -input:focus { - border-color: darkslateblue !important; - outline: 0; - -} - -select { - background-color: #1e1e1e !important; -} - -#cbi-dropbear h2, -#cbi-dropbear .cbi-map-descr, -#cbi-dropbear .cbi-map-descr abbr, -#cbi-rc h2, -#cbi-rc .cbi-map-descr, -#cbi-distfeedconf h2, -#cbi-distfeedconf .cbi-map-descr, -#cbi-customfeedconf h2, -#cbi-customfeedconf .cbi-map-descr, -#cbi-download h2, -#cbi-filelist h2 { - color: #ccc !important; -} - -.cbi-value-field>ul>li .ifacebadge { - background-color: #3c3c3c; -} - -.cbi-section-descr { - color: #ccc; -} - -.cbi-input-textarea { - background-color: #1e1e1e; - color: #ccc; -} - - - -.cbi-section-remove:nth-of-type(2n), -.cbi-section-node:nth-of-type(2n) { - background-color: #1e1e1e; -} - -.node-system-packages>.main table tr td:nth-last-child(1) { - color: #ccc; - -} - -.cbi-section-node .cbi-value { - padding: 1rem 1rem 0.3rem 1rem; -} - -.ifacebox { - background-color: none; - border: 1px solid #1e1e1e; -} - -.ifacebox-head { - color: #666; -} - -.ifacebox-body { - background-color: #333; -} - -.zonebadge strong { - color: #333; -} - -.zonebadge>.ifacebadge { - background-color: #3c3c3c; -} - -div.cbi-value var, -td.cbi-value-field var { - color: #5e72e4; -} - -#diag-rc-output>pre { - color: #ccc; - background-color: #1e1e1e; -} - -.node-services-vssr .block { - background-color: #3c3c3c !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); -} - -.node-services-vssr .block h4 { - color: #ccc !important; -} - -.node-services-vssr .status-bar { - color: #ccc; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - background-color: #1e1e1e; -} - -.node-services-vssr .cbi-section-table-row { - color: #ccc; - background-color: #3c3c3c !important; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, .35) -} - -.node-services-vssr .cbi-section-table-row.fast { - background: darkslateblue !important; - color: #fff; -} - -.node-services-vssr .ssr-button { - color: #ccc; - -} - -.node-services-vssr .incon:nth-child(2) { - border-right: #1e1e1e 1px solid; -} - -#xhr_poll_status>.label.success { - color: #ccc !important; - - background-color: darkolivegreen !important; -} - -.notice { - background-color: darkslateblue !important; -} - -.cbi-input-find, -.cbi-input-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-find, -.cbi-input-reload, -.cbi-button-reload { - color: #fff !important; - background: darkolivegreen !important; - border-color: darkolivegreen !important; -} - -.cbi-button-reset, -.cbi-input-remove { - color: #fff !important; - background-color: darkorange !important; - border-color: darkorange !important; -} - -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit.important, -.cbi-button-apply.important, -.cbi-button-reload.important, -.cbi-button-action.important { - border: 1px darkslateblue solid !important; -} - -.btn[value="Dismiss"], -.cbi-button[value="Terminate"], -.cbi-button[value="Reset"], -.cbi-button[value="Disabled"], -.cbi-button[onclick^="iface_reconnect"], -.cbi-button[onclick="handleReset(event)"], -.cbi-button-neutral[value="Disable"] { - font-weight: normal; - color: #fff; - border: thin solid darkorange!important; - background-color: darkorange!important; -} - -fieldset[id^="cbi-apply-"] { - background-color: #333333; -} - -#detail-bubble>div { - border: 1px solid #ccc; - border-radius: 2px; - padding: 5px; - background: #252525; -} - -.ifacebox-head.active { - background-color: #32325d !important; -} - -header .fill .status span[data-style="active"] { - color: #ccc !important; - background-color: darkolivegreen !important; -} - -#cbi-wireless .td, -#cbi-network .tr:first-child>.td, -.table[width="100%"]>.tr:first-child>.td, -[data-page="admin-network-diagnostics"] .tr>.td, -.tr.table-titles>.th, -.tr.cbi-section-table-titles>.th { - background-color: #252526; - border-bottom: black 1px solid !important; - -} - -.network-status-table .ifacebox-body .ifacebadge { - background-color: #252526; - border-bottom: 0; - box-shadow: none; -} - -td>.ifacebadge, -.td>.ifacebadge { - - background-color: darkslateblue; - border: 0; -} - -.btn.danger, -.cbi-section-remove>.cbi-button, -.cbi-button-remove, -.cbi-button-reset, -.cbi-button-negative, -.cbi-button[value="Stop"], -.cbi-button[value="Kill"], -.cbi-button[onclick="reboot(this)"], -.cbi-button-neutral[value="Restart"] { - border: thin solid darkorange !important; - background-color: darkorange !important; -} - -.cbi-section, -.cbi-section-error, -#iptables, -.Firewall form, -#cbi-network>.cbi-section-node, -#cbi-wireless>.cbi-section-node, -#cbi-wireless>#wifi_assoclist_table, -[data-tab-title], -[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), -[data-page="admin-system-opkg"] #maincontent>.container { - background: #1e1e1e !important; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); -} - -div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { - background: transparent !important; -} - -[data-page="admin-system-admin"] .cbi-map h2, -[data-page="admin-system-admin-password"] .cbi-map h2, -[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, -[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { - color: #ccc; -} - -[data-page="admin-system-flash"] { - .modal { - label>input[type="checkbox"] { - top: -0.35rem; - } - - .btn { - white-space: normal !important; - background-color: darkseagreen; - } - - .alert-message { - background-color: transparent !important; - } - - .danger { - border: thin solid darkorange !important; - background-color: darkorange !important; - } - } -} - -.cbi-value input[type="password"]+.cbi-button-neutral { - background-color: darkslateblue !important; -} - -.btn, -button, -select, -input, -.cbi-dropdown { - border: 1px solid #3c3c3c !important; -} - - -.cbi-dropdown .preview { - color: #ccc; -} - -.cbi-section-table-row { - background-color: #1e1e1e !important; -} - -.modal { - background-color: #1e1e1e; -} - -.cbi-button-positive { - color: #fff !important; - background-color: darkolivegreen !important; -} - -[data-page="admin-system-flash"] legend { - color: #ccc; -} - -.logout:before { - color: #adb5bd !important; -} - -.cbi-dropdown[open] { - border-color: darkslateblue !important; -} - -.cbi-dropdown[open]>ul.dropdown { - background: #252526 !important; - color: #ccc !important; - box-shadow: none; - border: 1px solid #3c3c3c !important; - - -} - -.cbi-dropdown[open]>ul.dropdown li { - color: #ccc; - border-bottom: 1px solid #3c3c3c !important; -} - -.cbi-dropdown[open]>ul.dropdown>li[selected] { - background-color: darkslateblue !important; - border-bottom: 1px solid #3c3c3c !important; -} - -.cbi-dropdown[open]>ul.dropdown>li.focus { - background: darkslateblue; - outline: none; -} - -.ifacebadge { - background-color: #333333; -} - -.cbi-dynlist>.item>span { - border: 1px solid #3c3c3c !important; -} - -.cbi-page-actions .cbi-button-apply, -.cbi-section-actions .cbi-button-edit, -.cbi-button-edit, -.cbi-button-apply, -.cbi-button-reload, -.cbi-button-action, -.cbi-button[value="Submit"], -.cbi-button[value="Upload"], -.cbi-button[value$="Apply"], -.cbi-button[onclick="addKey(event)"] { - background: darkslateblue !important; -} - -.btn.primary, -.cbi-page-actions .cbi-button-save, -.cbi-page-actions .cbi-button-apply+.cbi-button-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-positive, -.cbi-button-link, -.cbi-button[value="Enable"], -.cbi-button[value="Scan"], -.cbi-button[value^="Back"], -.cbi-button-neutral[onclick="handleConfig(event)"] { - background: darkslateblue; -} - -[data-page="admin-system-opkg"] h2 { - color: #ccc !important; -} - -@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { - .login-page .login-container .login-form { - -webkit-backdrop-filter: blur(var(--blur-radius-dark)); - backdrop-filter: blur(var(--blur-radius-dark)); - background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); - - } -} - - -@media screen and (max-width: 480px) { - .node-status-iptables>.main div>.cbi-map>form { - background-color: #1e1e1e; - box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); - } - - -} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/resources/menu-argon.js b/luci-theme-argon/htdocs/luci-static/resources/menu-argon.js new file mode 100644 index 000000000..cc4d4b6b6 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/resources/menu-argon.js @@ -0,0 +1,158 @@ +'use strict'; +'require baseclass'; +'require ui'; + +return baseclass.extend({ + __init__: function () { + ui.menu.load().then(L.bind(this.render, this)); + }, + + render: function (tree) { + var node = tree, + url = '', + children = ui.menu.getChildren(tree); + + for (var i = 0; i < children.length; i++) { + var isActive = (L.env.requestpath.length ? children[i].name == L.env.requestpath[0] : i == 0); + + if (isActive) + this.renderMainMenu(children[i], children[i].name); + } + + if (L.env.dispatchpath.length >= 3) { + for (var i = 0; i < 3 && node; i++) { + node = node.children[L.env.dispatchpath[i]]; + url = url + (url ? '/' : '') + L.env.dispatchpath[i]; + } + + if (node) + this.renderTabMenu(node, url); + } + + document.querySelector('a.showSide') + .addEventListener('click', ui.createHandlerFn(this, 'handleSidebarToggle')); + document.querySelector('.darkMask') + .addEventListener('click', ui.createHandlerFn(this, 'handleSidebarToggle')); + }, + + handleMenuExpand: function (ev) { + var a = ev.target, slide = a.parentNode, slide_menu = a.nextElementSibling; + var collapse = false; + + document.querySelectorAll('.main .main-left .nav > li >ul.active').forEach(function (ul) { + $(ul).stop(true).slideUp("fast", function () { + ul.classList.remove('active'); + ul.previousElementSibling.classList.remove('active'); + }); + if (!collapse && ul === slide_menu) { + collapse = true; + } + + }); + + if (!slide_menu) + return; + + + if (!collapse) { + $(slide).find(".slide-menu").slideDown("fast",function(){ + slide_menu.classList.add('active'); + a.classList.add('active'); + }); + a.blur(); + } + ev.preventDefault(); + ev.stopPropagation(); + }, + + renderMainMenu: function (tree, url, level) { + var l = (level || 0) + 1, + ul = E('ul', { 'class': level ? 'slide-menu' : 'nav' }), + children = ui.menu.getChildren(tree); + + if (children.length == 0 || l > 2) + return E([]); + + for (var i = 0; i < children.length; i++) { + var isActive = ((L.env.dispatchpath[l] == children[i].name) && (L.env.dispatchpath[l - 1] == tree.name)), + submenu = this.renderMainMenu(children[i], url + '/' + children[i].name, l), + hasChildren = submenu.children.length, + slideClass = hasChildren ? 'slide' : null, + menuClass = hasChildren ? 'menu' : 'food'; + if (isActive) { + ul.classList.add('active'); + slideClass += " active"; + menuClass += " active"; + } + + ul.appendChild(E('li', { 'class': slideClass }, [ + E('a', { + 'href': L.url(url, children[i].name), + 'click': (l == 1) ? ui.createHandlerFn(this, 'handleMenuExpand') : null, + 'class': menuClass, + 'data-title': hasChildren ? children[i].title.replace(" ", "_") : children[i].title.replace(" ", "_"), + }, [_(children[i].title)]), + submenu + ])); + } + + if (l == 1) { + document.querySelector('#mainmenu').appendChild(ul); + document.querySelector('#mainmenu').style.display = ''; + + } + return ul; + }, + + renderTabMenu: function (tree, url, level) { + var container = document.querySelector('#tabmenu'), + l = (level || 0) + 1, + ul = E('ul', { 'class': 'tabs' }), + children = ui.menu.getChildren(tree), + activeNode = null; + + if (children.length == 0) + return E([]); + + for (var i = 0; i < children.length; i++) { + var isActive = (L.env.dispatchpath[l + 2] == children[i].name), + activeClass = isActive ? ' active' : '', + className = 'tabmenu-item-%s %s'.format(children[i].name, activeClass); + + ul.appendChild(E('li', { 'class': className }, [ + E('a', { 'href': L.url(url, children[i].name) }, [_(children[i].title)]) + ])); + + if (isActive) + activeNode = children[i]; + } + + container.appendChild(ul); + container.style.display = ''; + + if (activeNode) + container.appendChild(this.renderTabMenu(activeNode, url + '/' + activeNode.name, l)); + + return ul; + }, + + handleSidebarToggle: function (ev) { + var showside = document.querySelector('a.showSide'), + sidebar = document.querySelector('#mainmenu'), + darkmask = document.querySelector('.darkMask'), + scrollbar = document.querySelector('.main-right'); + + if (showside.classList.contains('active')) { + showside.classList.remove('active'); + sidebar.classList.remove('active'); + scrollbar.classList.remove('active'); + darkmask.classList.remove('active'); + } + else { + showside.classList.add('active'); + sidebar.classList.add('active'); + scrollbar.classList.add('active'); + darkmask.classList.add('active'); + } + } +}); diff --git a/luci-theme-argon/less/cascade.less b/luci-theme-argon/less/cascade.less new file mode 100644 index 000000000..f80683639 --- /dev/null +++ b/luci-theme-argon/less/cascade.less @@ -0,0 +1,4616 @@ +// out: ../htdocs/luci-static/argon/css/cascade.css, compress: true , sourceMap: false +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2023 Jerrykuku + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-material: + * Copyright 2015 Lutty Yang + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * Font generate by Icomoon + * + * Licensed to the public under the Apache License 2.0 + */ + +/* + * Include base and custom css + */ +@import url("pure-min.less"); +@import url("fonts.less"); + + +:root { + --primary: #5e72e4; + --dark-primary: #483d8b; + --main-color: #09c; + --header-bg: #09c; + --header-color: #fff; + --bar-bg: #5e72e4; + --menu-bg-color: #fff; + --menu-color: #5f6368; + --menu-color-hover: #202124; + --main-menu-color: #202124; + --submenu-bg-hover: #d4d4d4; + --submenu-bg-hover-active: #09c; + --blue: #5e72e4; + --indigo: #5603ad; + --purple: #8965e0; + --pink: #f3a4b5; + --red: #f5365c; + --orange: #fb6340; + --yellow: #ffd600; + --green: #2dce89; + --teal: #11cdef; + --cyan: #2bffc6; + --white: #fff; + --gray: #8898aa; + --gray-dark: #32325d; + --light: #ced4da; + --lighter: #e9ecef; + --secondary: #f7fafc; + --success: #2dce89; + --info: #11cdef; + --warning: #fb6340; + --danger: #f5365c; + --light: #adb5bd; + --dark: #212529; + --default: #172b4d; + --white: #fff; + --neutral: #fff; + --darker: black; + --background-color: #f4f5f7; + --login-form-bg-color: rgba(244, 245, 247, 0.8); + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --blur-radius: 10px; + --blur-opacity: 0.5; + --blur-radius-dark: 10px; + --blur-opacity-dark: 0.5; + --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; + --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; +} + +* { + margin: 0px; + padding: 0px; + box-sizing: border-box; +} + +html, +body { + margin: 0px; + padding: 0px; + height: 100%; + font-size: 16px; + font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + font-family: var(--font-family-sans-serif); +} + +html { + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + font-size: 0.875rem; + background-color: #f4f5f7; + background-color: var(--background-color); + color: #32325d; + color: var(--gray-dark); + -webkit-tap-highlight-color: transparent; +} + + +textarea { + padding: 0.2rem; + + &:focus-visible { + outline: none; + border: 1px solid var(--primary); + } +} + +::selection { + background-color: #5e72e4; + background-color: var(--primary); + color: #ffffff; + color: var(--white); +} + +::placeholder { + color: var(--lighter); +} + +a:link, +a:visited, +a:active { + color: #5e72e4; + color: var(--primary); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +li { + list-style-type: none; +} + + +.table { + position: relative; + display: table; +} + +.tr { + display: table-row; +} + +.thead { + display: table-header-group; +} + +.tbody { + display: table-row-group; +} + +.tfoot { + display: table-footer-group; +} + +.td, +.th { + line-height: normal; + display: table-cell; + padding: .5em; + text-align: center; + vertical-align: middle; +} + +.th { + font-weight: bold; + white-space: nowrap; +} + +.tr.placeholder { + height: 4em; +} + +.tr.placeholder > .td { + line-height: 3; + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 0.4rem 0 !important; + text-align: center !important; + background: inherit; +} + +.td[width="33%"] { + padding: 1.1em 1.5rem; +} + +.table[width="33%"], +.th[width="33%"], +.td[width="33%"] { + width: 33%; +} + +.table[width="100%"], +.th[width="100%"], +.td[width="100%"] { + width: 100%; +} + +.col-1 { + flex: 1 1 30px !important; +} + +.col-2 { + flex: 2 2 60px !important; +} + +.col-3 { + flex: 3 3 90px !important; +} + +.col-4 { + flex: 4 4 120px !important; +} + +.col-5 { + flex: 5 5 150px !important; +} + +.col-6 { + flex: 6 6 180px !important; +} + +.col-7 { + flex: 7 7 210px !important; +} + +.col-8 { + flex: 8 8 240px !important; +} + +.col-9 { + flex: 9 9 270px !important; +} + +.col-10 { + flex: 10 10 300px !important; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; + +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: normal; + line-height: 1.1 !important; + color: inherit; +} + + +select { + padding: .36rem .8rem; + color: #555; + border: thin solid #ccc; + background-color: #fff; + background-image: none; +} + +.btn, +button, +select, +input, +.cbi-dropdown { + line-height: 1.5em; + padding: .5rem .75rem; + + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: .25rem; + outline: 0; + background-image: none; + box-shadow: none; + transition: box-shadow .15s ease; +} + +select, +.cbi-dropdown { + width: inherit; + cursor: default; +} + +select:not([multiple="multiple"]):focus, +input:not(.cbi-button):focus, +.cbi-dropdown:focus { + border-color: #5e72e4; + border-color: var(--primary); + box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, .1); +} + +.cbi-dropdown, +select[multiple="multiple"] { + height: auto; +} + +pre { + overflow: auto; +} + +code { + padding: 1px 3px; + color: #101010; + border-radius: 2px; + background: #ddd; + font-family: inherit; + font-size: inherit; +} + +abbr { + cursor: help; + text-decoration: underline; + color: #5e72e4; + color: var(--primary); +} + +hr { + margin: 1rem 0; + opacity: .1; + border-color: #eee; +} + + +ul { + line-height: normal; +} + +li { + list-style-type: none; +} + +h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: thin solid #eee; +} + +h2 { + margin: 0 0 1rem 0; + font-size: 1.25rem; + letter-spacing: 0.1rem; + padding: 1rem 1.25rem; + color: #32325d; + border-radius: .25rem; + background: #fff; + box-shadow: 0 4px 8px rgba(0, 0, 0, .03); + font-weight: bold; + +} + +h3 { + font-size: 1.1rem; + line-height: 1; + display: block; + width: 100%; + margin: 0; + margin-bottom: 0; + padding: 0.8755rem 1.25rem; + color: #32325d; + color: var(--gray-dark); + border-radius: .25rem; + background: #fff; + font-weight: bold; +} + +h4 { + margin: 0; + padding: 0.75rem 1.25rem; + font-size: 0.875rem; + font-weight: 600; + color: #525f7f; + font-weight: bold; + + em { + padding: 0 0.5rem; + } + +} + +h5 { + font-size: 1rem; + margin: 2rem 0 0 0; + padding-bottom: 10px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.nowrap:not(.td) { + white-space: nowrap; +} + +[disabled="disabled"] { + pointer-events: none; +} + + +/*********************** +* +* Login Page +* +***************************/ + +.login-page { + height: 100%; + + .video { + position: absolute; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + background-color: #000; + background-color: var(--darker); + overflow: hidden; + + video { + width: 100%; + height: auto; + } + } + + .volume-control { + position: fixed; + right: 1rem; + top: 1rem; + width: 1.5rem; + height: 1.5rem; + z-index: 5000; + cursor: pointer; + background-size: contain; + background-image: url(../img/volume_high.svg); + + &.mute { + background-image: url(../img/volume_off.svg); + } + } + + .main-bg { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + background-image: url(../img/blank.png); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + transition: all 0.5s; + } + + .login-container { + height: 100%; + margin-left: 4.5rem; + position: absolute; + top: 0px; + display: flex; + flex-direction: column; + -webkit-box-pack: center; + justify-content: center; + align-items: flex-start; + min-height: 100%; + z-index: 2; + width: 420px; + box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 35px -5px; + margin-left: 5%; + background: transparent; + + .login-form { + display: flex; + flex-direction: column; + -webkit-box-align: center; + align-items: center; + position: absolute; + top: 0px; + width: 100%; + min-height: 100%; + max-width: 420px; + background-color: #fff; + background-color: var(--white); + -webkit-backdrop-filter: blur(var(--blur-radius)); + backdrop-filter: blur(var(--blur-radius)); + background-color: rgba(244, 245, 247, var(--blur-opacity)); + + .brand { + display: flex; + -webkit-box-align: center; + align-items: center; + margin: 50px auto 100px 50px; + color: #525461; + color: var(--default); + justify-content: center; + + .icon { + width: 50px; + height: auto; + margin-right: 25px; + } + + .brand-text { + font-size: 1.25rem; + font-weight: 700; + font-family: "TypoGraphica"; + + } + + &:hover { + text-decoration: none; + } + } + + .form-login { + width: 100%; + padding: 20px 50px; + box-sizing: border-box; + + .errorbox { + text-align: center; + color: #fb6340; + color: var(--warning); + padding-bottom: 2rem; + } + + .input-group { + margin-bottom: 1.25rem; + position: relative; + + &::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #525461; + color: var(--default); + font-size: 1.5rem; + position: absolute; + z-index: 100; + left: 10px; + top: 10px; + } + + .border { + position: absolute; + width: 100%; + height: 1px; + bottom: 0; + border-bottom: 1px #5e72e4 solid; + border-bottom: 1px var(--primary) solid; + transform: scaleX(0); + transition: transform 0.3s; + } + + input { + font-size: 1rem; + line-height: 1.5em; + display: block; + width: 100%; + padding: .5rem .75rem 0.5rem 3rem; + margin: 0.825rem 0; + box-sizing: border-box; + transition: all .3s cubic-bezier(.68, -.55, .265, 1.55); + color: #525461; + color: var(--default); + border: 0; + border-radius: 0; + border-bottom: 1px solid #fff; + border-bottom: 1px solid var(--white); + background-color: transparent; + background-clip: padding-box; + box-shadow: 0 3px 2px rgba(233, 236, 239, .05); + outline: none; + + &:focus + .border { + transform: scaleX(1); + } + } + + .cbi-input-password { + margin-bottom: 2rem; + position: relative; + } + } + + .user-icon::before { + content: "\e971"; + } + + .pass-icon::before { + content: "\e910"; + + } + } + + .cbi-button-apply { + width: 100% !important; + box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 50px 0px; + font-weight: 600; + font-size: 15px; + color: #fff; + color: var(--white); + text-align: center; + width: 100%; + cursor: pointer; + min-height: 50px; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + border-radius: 6px; + outline: none; + border-width: initial; + border-style: none; + border-color: initial; + border-image: initial; + padding: 10px 0px; + margin: 30px 0px 100px; + transition: all 0.3s !important; + letter-spacing: 0.8rem; + + &:hover, + :focus { + opacity: 0.9; + } + } + } + + footer { + box-sizing: border-box; + width: 100%; + text-align: center; + line-height: 1.6rem; + display: flex; + justify-content: space-evenly; + margin-top: auto; + padding: 0px 0px 30px; + z-index: 10; + color: #525461; + color: var(--default); + position: absolute; + bottom: 0; + + .ftc { + position: absolute; + bottom: 30px; + width: 100%; + } + + .luci-link { + display: block; + } + } + } +} + + +header, +.main { + width: 100%; +} + + +footer { + font-size: .875rem; + overflow: hidden; + padding: 1rem; + text-align: right; + white-space: nowrap; + color: #aaa; +} + +footer > a { + text-decoration: none; + color: #aaa; +} + +small { + font-size: 90%; + line-height: 1.42857143; + white-space: normal; +} + +/*********************** +* +* Layout +* +***************************/ + +.main { + position: relative; + top: 0; + bottom: 0; + overflow-y: auto; + height: 100%; + display: flex; + flex-direction: row; + +} + +.main-left { + flex-shrink: 0; + width: 15rem; + height: 100%; + background-color: var(--menu-bg-color); + box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; + overflow-x: auto; + z-index: 100; + + + .sidenav-header { + padding: 1.5rem .5rem; + text-align: center; + + .brand { + display: block; + font-size: 1.8rem; + color: #5e72e4; + color: var(--primary); + font-family: "TypoGraphica"; + text-decoration: none; + text-align: center; + cursor: default; + margin: 0 2rem; + + .logo { + max-width: 100%; + height: auto; + } + } + } + + &::-webkit-scrollbar { + width: 5px; + height: 1px; + } + + &::-webkit-scrollbar-thumb { + background-color: #f6f9fc + } + + &::-webkit-scrollbar-track { + background-color: #fff; + } +} + +.main-right { + flex-grow: 1; + height: 100%; + transition: all 0.2s; + overflow-x: hidden; + overflow-y: auto; + display: flex; + flex-direction: column; + + & > #maincontent { + position: relative; + z-index: 50; + flex: 1; + display: flex; + flex-direction: column; + + & > .container { + margin: 0 1.25rem 1rem 1.25rem; + flex-grow: 1; + } + + .Dashboard { + color: var(--gray-dark) !important; + + h3 { + color: var(--gray-dark); + } + + p { + margin-bottom: 3px; + margin-top: 3px; + } + + hr { + border-top: 1px solid rgba(0, 0, 0, 1); + } + + .dashboard-bg { + background-color: #fff; + } + + .settings-info { + padding-top: 1em; + padding-bottom: 1em; + + p span:nth-child(2) { + max-height: 18.5px; + top: 4px; + } + + .label { + font-size: .7rem; + padding: 0.2rem 0.6rem; + } + } + } + } +} + + +header { + color: #fff; + color: var(--header-color); + padding: 0; + position: relative; + + &.bg-primary { + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + } + + &::after { + content: ""; + position: absolute; + height: 2rem; + width: 100%; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + } + + .fill { + padding: 0.8rem 0; + border-bottom: 0px solid rgba(255, 255, 255, .08) !important; + display: flex; + + .container { + height: 2rem; + padding: 0 1.25rem; + display: flex; + align-items: center; + width: 100%; + + .flex1 { + flex: 1; + + .showSide { + display: none; + color: #fff; + font-size: 1.4rem; + + &:hover { + text-decoration: none; + } + } + + .brand { + font-size: 1.5rem; + color: #fff; + font-family: "TypoGraphica"; + text-decoration: none; + padding-left: 1rem; + cursor: default; + vertical-align: text-bottom; + display: none; + } + } + + + .pull-right { + float: right; + margin-top: 0rem; + display: flex; + } + } + + .status { + span { + display: inline-block; + font-size: 0.875rem; + font-weight: bold; + padding: 0.3rem 0.8rem; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + text-shadow: none; + border-radius: 4px; + cursor: pointer; + transition: all 0.3s; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + margin: 0 0.25rem; + + &:last-child { + margin-right: 0; + } + } + + span[data-indicator="poll-status"] { + color: #fff; + + } + + span[data-style="active"] { + + background-color: var(--green); + + } + + span[data-style="inactive"] { + color: #ffffff !important; + background-color: #32325d; + + } + } + } +} + + +#xhr_poll_status { + display: flex; + margin-left: 0.5rem; + + * { + color: #fff; + } +} + +div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { + border: 0 !important; +} + +.danger { + background-color: #ff7d60 !important; +} + +.warning { + background-color: #f0e68c !important; +} + +.success { + background-color: #5cb85c !important; +} + +.notice { + background-color: #11cdef !important; + color: #fff; +} + +.error { + color: #f00; +} + +.alert, +.alert-message { + font-weight: bold; + margin-bottom: 1.25rem; + margin-left: 1.25rem; + margin-right: 1.25rem; + padding: 1rem 1.25rem; + border: 0; + border-radius: 0.25rem !important; + background-color: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + text-shadow: none; + + &.error { + background-color: #ffd600; + } + + h4 { + padding: 0.25rem 0rem; + border-radius: 4px; + background-color: #ffd600; + } + + .btn { + height: auto; + } +} + +.alert-message > h4 { + font-size: 110%; + font-weight: bold; +} + +.alert-message > * { + margin: .5rem 0; +} + +.alert-message .btn { + padding: .3rem .6rem; +} + +.container .alert, +.container .alert-message { + margin-left: 0; + margin-right: 0; + margin-top: 0rem; +} + + +/* + * Main Menu + */ + +.main { + .main-left { + transition: all 0.2s; + + .nav { + margin-top: 0.5rem; + + > li > a:first-child { + display: block; + margin: 0.1rem .5rem 0.1rem .5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .25rem; + text-decoration: none; + cursor: default; + font-size: 1rem; + transition: all 0.2s; + position: relative; + + &.active { + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + + &::after { + transform: rotate(90deg); + color: #fff !important; + } + } + + &:hover { + cursor: pointer; + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + } + + &::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e915"; + color: #5e72e4; + color: var(--primary); + } + } + + li { + padding: 0.5rem 1rem; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + padding: 0; + + a { + display: block; + color: #5f6368; + color: var(--menu-color); + } + + &.slide { + padding: 0; + + ul { + display: none; + overflow: hidden; + } + + &:hover { + background: none; + } + + .slide-menu { + margin: 0 0.5rem 0 2.5rem; + padding: 0rem 0.5rem; + + &.active { + display: block; + + } + + + li { + position: relative; + border-radius: 0.25rem; + margin: 0; + background: none; + list-style: none; + + a { + text-decoration: none; + padding: 0.5rem 0rem; + } + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 0; + height: 2px; + background-color: #5e72e4; + background-color: var(--primary); + transition: all 0.2s; + } + + &:hover { + background: none; + + &::after { + width: 100%; + } + } + + } + + .active { + background: none; + + color: var(--menu-color); + + a { + color: var(--menu-color); + } + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #5e72e4; + background-color: var(--primary); + transition: all 0.2s; + } + + &:hover { + + background: none; + + &::after { + width: 100%; + } + } + } + } + + } + + + .menu { + display: block; + margin: 0.1rem .5rem 0.1rem .5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .25rem; + text-decoration: none; + cursor: default; + font-size: 1rem; + transition: all 0.2s; + position: relative; + + &.active { + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + + &::after { + transform: rotate(90deg); + color: #fff !important; + } + } + + &:hover { + cursor: pointer; + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + } + + &::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e915"; + color: #5e72e4; + color: var(--primary); + } + + &::after { + position: absolute; + right: 0.5rem; + top: 0.8rem; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: '\e90f'; + transition: all .15s ease; + color: #ced4da; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + transition: all 0.3s; + } + } + + + .menu[data-title=Status]:before { + content: "\e906"; + color: #5e72e4; + color: var(--primary); + } + + .menu[data-title=System]:before { + content: "\e90a"; + color: #fb6340; + } + + .menu[data-title=Services]:before { + content: "\e909"; + color: #11cdef; + } + + .menu[data-title=NAS]:before { + content: "\e90c"; + color: #f3a4b5; + } + + .menu[data-title=VPN]:before { + content: "\e90b"; + color: #8965e0; + } + + .menu[data-title=Network]:before { + content: "\e908"; + color: #8965e0; + } + + .menu[data-title=Bandwidth_Monitor]:before { + content: "\e90d"; + color: #2dce89; + } + + .menu[data-title=Docker]:before { + content: "\e911"; + color: #6699ff; + } + + .menu[data-title=Statistics]:before { + content: "\e913"; + color: #8965e0; + } + + .menu[data-title=Control]:before { + content: "\e912"; + color: #5e72e4; + color: var(--primary); + } + + .menu[data-title=Asterisk]:before { + content: "\e914"; + color: #fb6340; + } + + a[data-title=Log_out], + .food[data-title=Log_out] { + &::before { + content: "\e907"; + color: #adb5bd; + } + } + + } + } + } +} + +.lg { + margin: 0; + padding: 0 !important; +} + +.logout { + display: block; + margin: 0.8rem .5rem 0.1rem 0.5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .25rem; + text-decoration: none; + font-size: 1rem; + transition: all 0.2s; + position: relative; +} + +.logout:before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e907"; + color: #32325d !important; +} + + +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before { + transition: transform .1s ease-in-out; +} + +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before { + transition: transform .2s ease-in-out; +} + +.main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before { + display: none; +} + + +.cbi-section, +.cbi-section-error, +#iptables, +.Firewall form, +#cbi-network > .cbi-section-node, +#cbi-wireless > .cbi-section-node, +#cbi-wireless > #wifi_assoclist_table, +[data-tab-title], +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + font-family: inherit; + font-weight: normal; + font-style: normal; + line-height: normal; + min-width: inherit; + margin: 1.25rem 0; + padding: 0; + border: 0; + + border-radius: 0.25rem; + background-color: #fff; + box-shadow: 0 0 1rem 0 rgba(136, 152, 170, .15); + + &:last-child { + margin: 0; + border: 0; + } + +} + +.cbi-modal .cbi-section, +.cbi-section .cbi-section { + padding: 0; + box-shadow: none; +} + +.cbi-modal .cbi-tabmenu { + margin-left: 0; +} + +.cbi-map:not(:first-child) { + margin-top: 1rem; +} + +.cbi-map-descr { + font-size: small; + line-height: 1.5; + padding: 0 1.25rem 1rem 1.25rem; +} + +.cbi-section { + & > .cbi-section-descr { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + + &:empty { + padding-top: 0 !important; + padding-bottom: 0rem !important; + } + } +} + +.cbi-section-descr:not(:empty) { + font-size: small; + line-height: 1.5; + padding: 0rem 1rem; +} + +.cbi-map-descr + fieldset { + margin-top: 1rem; +} + +.cbi-map-descr > abbr { + cursor: help; + text-decoration: underline; +} + +.cbi-section > legend { + display: none !important; +} + +fieldset > fieldset, +.cbi-section > .cbi-section { + margin: 0; + padding: 0; + border: 0; + box-shadow: none; +} + +.cbi-section > h3:first-child, +.panel-title { + font-size: 1.1rem; + line-height: 1; + display: block; + width: 100%; + margin: 0; + margin-bottom: 0; + padding: 0.8755rem 1.25rem; + color: #32325d; + color: var(--gray-dark); + +} + +.cbi-section > h3:first-child, +.cbi-section > h4:first-child, +.cbi-section > p:first-child, +[data-tab-title] > h3:first-child, +[data-tab-title] > h4:first-child, +[data-tab-title] > p:first-child { + padding: 1rem 1.25rem; +} + +.cbi-section p { + padding: 1rem; +} + +.cbi-tblsection { + overflow-x: auto; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +table, +.table { + overflow-y: hidden; + width: 100%; + font-size: 90%; +} + +.table .table-titles th { + background-color: #e9ecef; + background-color: var(--lighter); +} + +table > tbody > tr > td, +table > tbody > tr > th, +table > tfoot > tr > td, +table > tfoot > tr > th, +table > thead > tr > td, +table > thead > tr > th, +.table > .tbody > .tr > .td, +.table > .tbody > .tr > .th, +.table > .tfoot > .tr > .td, +.table > .tfoot > .tr > .th, +.table > .thead > .tr > .td, +.table > .thead > .tr > .th, +.table > .tr > .td.cbi-value-field, +.table > .tr > .th.cbi-section-table-cell { + padding: .5rem; +} + +.container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td { + padding: .6rem; +} + +.cbi-section-table-cell { + line-height: 1.1; + align-self: flex-end; + flex: 1 1 auto; +} + +tr > td, +tr > th, +.tr > .td, +.tr > .th, +.cbi-section-table-row::before, +#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { + border-top: thin solid #ddd; + padding: 1.1em 1.25rem; +} + +#cbi-wireless .td, +.table[width="100%"] > .tr:first-child > .td, +[data-page="admin-network-diagnostics"] .tr > .td, +.tr.table-titles > .th, +.tr.cbi-section-table-titles > .th { + border-top: 0 !important; + background-color: #f6f9fc; + padding: 1.1em 1.25rem; + line-height: 1.3rem; +} + +[data-page="admin-network-network"] { + .cbi-value-field { + .cbi-dynlist { + padding: 0 !important; + } + } + + .td > .ifacebadge > .cbi-tooltip-container { + display: flex; + + img { + vertical-align: middle; + } + } +} + +#cbi-network .tr:first-child > .td { + border-top: 0; +} + +.table[width="100%"] > .tr:first-child > .td { + margin: auto 0; +} + +.cbi-section-table-row { + margin-bottom: 1rem; + text-align: center !important; + background: #f4f4f4; +} + +.cbi-section-table-row:last-child { + margin-bottom: 0; +} + +.cbi-section-table-row > .cbi-value-field .cbi-dropdown, +.cbi-section-table-row > .cbi-value-field .cbi-input-select, +.cbi-section-table-row > .cbi-value-field .cbi-input-text, +.cbi-section-table-row > .cbi-value-field .cbi-input-password { + width: 100%; +} + +.cbi-section-table-row > .cbi-value-field .cbi-input-text, +.cbi-section-table-row > .cbi-value-field .cbi-input-password { + min-width: 80px; +} + +.cbi-section-table-row > .cbi-value-field [data-dynlist] > input, +.cbi-section-table-row > .cbi-value-field input.cbi-input-password { + width: calc(100% - 1.5rem); +} + +.cbi-section-table-row .td { + text-align: center !important; + + .cbi-checkbox { + input[type="checkbox"] { + margin: 0; + } + } +} + +.control-group { + display: inline-flex; + width: 100%; + flex-wrap: wrap; + gap: 0px; + + input { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-right-width: 0; + margin-right: 0; + } + + input + button { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + margin-left: 0; + border-left-width: 0; + } +} + +.control-group > * { + vertical-align: middle; +} + +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tr:nth-of-type(2n) { + background-color: #f9f9f9; +} + +/* fix multiple table */ +table table, +.table .table, +.cbi-value-field table, +.cbi-value-field .table, +td > table > tbody > tr > td, +.td > .table > .tbody > .tr > .td, +.cbi-value-field > table > tbody > tr > td, +.cbi-value-field > .table > .tbody > .tr > .td { + border: 0; +} + +/* button style */ +.btn, +.cbi-button, +.item::after { + font-size: .875rem; + display: inline-block; + width: auto !important; + padding: 0.5rem .75rem; + margin-left: 5px; + margin-right: 5px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all .2s ease-in-out; + text-align: center; + vertical-align: middle; + white-space: nowrap; + text-decoration: none; + border: 0; + border-radius: .25rem; + background-color: #f0f0f0; + background-image: none; + appearance: none; + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +.btn, +.cbi-button { + &:last-child { + margin-right: 0 !important; + } + + &:first-child { + margin-left: 0 !important; + } + + &:only-child { + margin-left: 5px !important; + margin-right: 5px !important; + } +} + +.btn:not(button) ul:not(.dropdown) li { + padding: 0; +} + +.cbi-button-up, +.cbi-button-down { + display: inline-block; + min-width: 0; + padding: .2rem 1rem; + font-size: 0; + color: transparent !important; + background: url(../icon/arrow.svg) no-repeat center; + background-size: 12px 20px; +} + +.cbi-button-up { + transform: scaleY(-1); +} + +.cbi-button:not(select) { + appearance: none !important; +} + + +.btn:hover, +.btn:focus, +.btn:active, +.cbi-button:hover, +.cbi-button:focus, +.cbi-button:active, +.item:hover::after, +.item:focus::after, +.item:active::after, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:hover, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:focus, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:active { + text-decoration: none; + outline: 0; +} + +.btn:hover, +.btn:focus, +.cbi-button:hover, +.cbi-button:focus, +.item:hover::after, +.item:focus::after { + box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 2px rgba(0, 0, 0, .2); +} + +.btn:active, +.cbi-button:active, +.item:active::after { + box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23); +} + +.cbi-button-up:hover, +.cbi-button-up:focus { + box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 -2px 2px rgba(0, 0, 0, .2); +} + +.cbi-button-up:active { + box-shadow: 0 -10px 20px rgba(0, 0, 0, .19), 0 -6px 6px rgba(0, 0, 0, .23); +} + +.btn:disabled, +.cbi-button:disabled { + cursor: not-allowed; + pointer-events: none; + opacity: .5; + box-shadow: none; +} + +/* gray */ +.alert-message [class="btn"], +.modal div[class="btn"], +.cbi-button-find, +.cbi-button-link, +.cbi-button-up, +.cbi-button-down, +.cbi-button-neutral, +.cbi-button[name="zero"], +.cbi-button[name="restart"], +.cbi-button[onclick="hide_empty(this)"] { + color: #fff; + border: thin solid #8898aa; + background-color: #8898aa; +} + +/* dark blue */ +.btn.primary, +.cbi-page-actions .cbi-button-save, +.cbi-page-actions .cbi-button-apply + .cbi-button-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-positive, +.cbi-button-link, +.cbi-button[value="Enable"], +.cbi-button[value="Scan"], +.cbi-button[value^="Back"], +.cbi-button-neutral[onclick="handleConfig(event)"] { + font-weight: normal; + color: #fff !important; + border: thin solid #5e72e4; + border: thin solid var(--primary); + background-color: #5e72e4; + background-color: var(--primary);; +} + +/* light blue */ +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-action, +.cbi-button[value="Submit"], +.cbi-button[value="Upload"], +.cbi-button[value$="Apply"], +.cbi-button[onclick="addKey(event)"] { + font-weight: normal; + color: #fff !important; + border: thin solid #5e72e4; + border: thin solid var(--primary); + + background-color: #5e72e4; + background-color: var(--primary); +} + +/* red */ +.btn.danger, +.cbi-section-remove > .cbi-button, +.cbi-button-remove, +.cbi-button-reset, +.cbi-button-negative, +.cbi-button[value="Stop"], +.cbi-button[value="Kill"], +.cbi-button[onclick="reboot(this)"], +.cbi-button-neutral[value="Restart"] { + font-weight: normal; + color: #fff; + border: thin solid #f5365c; + border: thin solid var(--red); + background-color: #f5365c; + background-color: var(--red); +} + +/* yellow */ +.btn[value="Dismiss"], +.cbi-button[value="Terminate"], +.cbi-button[value="Reset"], +.cbi-button[value="Disabled"], +.cbi-button[onclick^="iface_reconnect"], +.cbi-button[onclick="handleReset(event)"], +.cbi-button-neutral[value="Disable"] { + font-weight: normal; + color: #fff; + border: thin solid #eea236; + background-color: #f0ad4e; +} + +/* green */ +.cbi-button-success, +.cbi-button-download { + font-weight: normal; + color: #fff; + border: thin solid #4cae4c; + background-color: #5cb85c; +} + +.cbi-page-actions .cbi-button-link:first-child { + float: left; +} + +.a-to-btn { + text-decoration: none; +} + +.cbi-value-field .cbi-button-add { + font-weight: bold; + padding: 1px 6px; + display: inline-block; + align-items: center; +} + +.tabs { + margin: 0 0 1rem 0; + padding: 0 1rem; + background-color: #FFFFFF; + border-radius: 0.25rem; + box-shadow: 0 4px 8px rgba(0, 0, 0, .03); + white-space: nowrap; + overflow-x: auto; + + &::-webkit-scrollbar { + width: 1px; + height: 5px; + } + + &::-webkit-scrollbar-thumb { + background-color: #f6f9fc + } + + &::-webkit-scrollbar-track { + background-color: #fff; + } + + li[class~="active"], + li:hover { + cursor: pointer; + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #e4e9ee; + margin-bottom: 0; + border-radius: 0; + + a { + color: #5e72e4; + color: var(--primary); + } + } + + li { + font-size: 0.875rem; + display: inline-block; + padding: 0.875rem 0rem; + border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); + margin: 0; + transition: all 0.2s; + + a { + text-decoration: none; + color: #404040; + padding: 0.5rem 0.8rem; + } + + &:hover { + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + } + } +} + + +.cbi-tabmenu { + color: white; + padding: 0.5rem 1rem 0 1rem; + white-space: nowrap; + overflow-x: auto; + + &::-webkit-scrollbar { + width: 1px; + height: 5px; + } + + &::-webkit-scrollbar-thumb { + background-color: #f6f9fc + } + + &::-webkit-scrollbar-track { + background-color: #fff; + } + + li { + background: #dce3e9; + display: inline-block; + font-size: 0.875rem; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + padding: 0.5rem 0rem; + border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); + margin: 0 0.2rem; + + a { + text-decoration: none; + color: #404040; + padding: 0.5rem 0.8rem; + } + + &:hover { + cursor: pointer; + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #e4e9ee; + margin-bottom: 0; + + a { + color: #525f7f; + } + } + } + + li[class~="cbi-tab"] { + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #e4e9ee; + margin-bottom: 0; + + a { + color: #5e72e4; + color: var(--primary); + } + } +} + +.cbi-tab-descr { + padding: 0.5rem 1.5rem; +} + +.cbi-section-node { + padding: 0; +} + +.cbi-section .cbi-section-remove:nth-of-type(2n), +.container > .cbi-section .cbi-section-node:nth-of-type(2n) { + background-color: #f9f9f9; +} + +[data-tab-title] { + overflow: hidden; + height: 0; + opacity: 0; + margin: 0; + padding: 0rem 0rem !important; + + p { + margin-left: 1rem; + margin-bottom: 1rem; + } +} + + +[data-tab-active="true"] { + overflow: visible; + height: auto; + opacity: 1; + transition: opacity .25s ease-in; + margin: inherit !important; +} + + +.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3), +.cbi-section[id] .cbi-section-node:nth-of-type(4n+4) { + background-color: #f9f9f9; +} + +.cbi-section-node-tabbed { + margin-top: 0; + padding: 0; + border: 0 solid #d4d4d4; + border-radius: 0.25rem; +} + +.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { + background-color: #f9f9f9; +} + +.cbi-value-field { + display: table-cell; +} + +.cbi-value-description { + line-height: 1.25; + display: table-cell; + + abbr { + color: #32325d; + color: var(--gray-dark); + } +} + +.cbi-value-description { + font-size: small; + padding: .5rem; + opacity: .5; +} + +.cbi-value-title { + display: table-cell; + float: left; + width: 23rem; + + padding-right: 2rem; + text-align: right; + word-wrap: break-word; +} + +.cbi-value { + display: inline-block; + width: 100%; + padding: .35rem 1rem .2rem 1rem; + line-height: 2.4rem; + + &:first-child { + padding-top: 1rem; + } + + &:last-child { + padding-bottom: 1rem; + } + + ul { + line-height: 1.25; + } +} + + +.cbi-value-field .cbi-dropdown, +.cbi-value-field .cbi-input-select, +.cbi-value input[type="text"], +.cbi-value input[type="password"], +.cbi-value textarea { + min-width: 18rem; +} + +.cbi-value input[type="password"] { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + font-size: 0.875rem; + margin: .25rem 0 .25rem 0.1rem; +} + +.cbi-value input[type="password"] + .cbi-button-neutral { + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem !important; + padding: 0.5rem 0; + margin: 0.25rem 0; + font-weight: normal; + font-size: 1.2rem; + line-height: 1.5rem; + color: #fff; + outline: 0; + background-color: #8898aa; + box-shadow: none; + border: 1px solid #8898aa; + border-radius: 0.25rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +#cbi-firewall-zone .cbi-input-select, +#cbi-network-switch_vlan .cbi-input-select { + min-width: 11rem; +} + +#cbi-network-switch_vlan .cbi-input-text { + max-width: 3rem; +} + +.cbi-input-invalid { + color: #f5365c !important; + border-color: #f5365c !important; +} + +.cbi-section-error { + font-weight: bold; + line-height: 1.42857143; + margin: 18px; + padding: 6px; + border: thin solid #f5365c; + border-radius: 3px; + background-color: #fce6e6; +} + +.cbi-section-error ul { + margin: 0 0 0 20px; +} + +.cbi-section-error ul li { + font-weight: bold; + color: #f5365c; +} + +.td[data-title]::before { + font-weight: bold; + display: none; + padding: .25rem 0; + content: attr(data-title) ":\20"; + text-align: left; + white-space: nowrap; +} + +.tr.placeholder .td[data-title]::before { + display: none; +} + +.tr[data-title]::before, +.tr.cbi-section-table-titles.named::before { + font-weight: bold; + display: table-cell; + align-self: center; + flex: 1 1 5%; + padding: .25rem; + content: attr(data-title) "\20"; + text-align: center; + vertical-align: middle; + white-space: normal; + word-wrap: break-word; +} + +.cbi-rowstyle-1 { + background-color: #f9f9f9; +} + +.cbi-rowstyle-2 { + background-color: #eee; +} + +.cbi-rowstyle-2 .cbi-button-up, +.cbi-rowstyle-2 .cbi-button-down, +body:not(.Interfaces) .cbi-rowstyle-2:first-child { + background-color: #fff !important; +} + +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; +} + +.td.cbi-section-actions { + text-align: right !important; + vertical-align: middle; +} + +.td.cbi-section-actions > * { + display: inline-flex; +} + +.td.cbi-section-actions > * > *, +.td.cbi-section-actions > * > form > * { + margin: 0 5px; + display: flex; + align-items: center; +} + +.td.cbi-section-actions > * > form { + display: inline-flex; + margin: 0; +} + +.cbi-checkbox { + margin: 0 0.25rem; +} + +/* lists */ +.cbi-dynlist { + + line-height: 1.3; + flex-direction: column; + min-height: 30px; + cursor: text; + + & > .item { + display: inline-flex; + flex-wrap: nowrap; + margin: 0.25rem 0; + position: relative; + max-width: 25rem; + pointer-events: none; + color: #8898aa; + outline: 0; + + &::after { + content: "\00D7"; + pointer-events: auto; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem !important; + margin: 0; + font-weight: normal; + font-size: 1.2rem; + line-height: 1.5rem; + + color: #fff; + border: 1px solid #f5365c; + border-radius: 0 0.25rem 0.25rem 0; + outline: 0; + + background-color: var(--red); + background-image: none; + box-shadow: none; + box-sizing: border-box; + } + + & > span { + display: block; + padding: 0.5rem 0.75rem; + box-sizing: border-box; + min-width: 15.5rem; + width: 15.5rem; + transition: box-shadow 0.15s ease; + overflow: hidden; + text-overflow: ellipsis; + + white-space: nowrap; + word-break: break-word; + font-size: .875rem; + line-height: 24px; + + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: .25rem 0 0 .25rem; + outline: 0; + background-image: none; + box-shadow: none; + box-sizing: border-box; + } + } + + & > .add-item { + display: inline-flex; + align-items: center; + width: 100%; + min-width: 16rem; + margin: 0.25rem 0; + gap: 0; + flex-wrap: nowrap; + + input { + display: block; + padding: 0.5rem 0.75rem; + box-sizing: border-box; + min-width: 15.5rem; + width: 15.5rem; + transition: box-shadow 0.15s ease; + + white-space: nowrap; + word-break: break-word; + font-size: .875rem; + line-height: 1.5rem; + + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: .25rem 0 0 .25rem; + border-right-width: 0; + outline: 0; + background-image: none; + box-shadow: none; + } + + .cbi-button { + display: flex; + width: auto !important; + padding-left: 0.8rem; + padding-right: 0.8rem; + margin-left: 0; + align-items: center; + justify-content: center; + + font-size: 0.875rem; + line-height: 1.5rem; + + outline: 0; + background-image: none; + background-color: var(--gray); + box-shadow: none; + color: var(--white); + border-color: var(--gray); + border-radius: 0.25rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .cbi-button-add { + width: 2.5rem !important; + padding: 0.5rem 0 !important; + + font-weight: normal; + font-size: 1.2rem; + + color: #fff; + background-color: var(--primary); + border: 1px solid var(--primary); + } + + + &:not([ondrop]) { + & > input { + overflow: hidden; + min-width: 15.5rem; + width: 15.5rem; + white-space: nowrap; + text-overflow: ellipsis; + } + } + } +} + + +.cbi-dynlist[name="sshkeys"] > .item { + max-width: none; +} + + +.cbi-dynlist > .cbi-dynlist > .add-item[ondrop] > input { + min-width: 13rem; +} + +.cbi-dynlist, +.cbi-dropdown { + position: relative; + display: inline-flex; + + min-height: 2.1875rem; +} + +.cbi-dropdown[placeholder*="select"] { + max-width: 25rem; + height: auto; + margin-top: -3px; +} + +.cbi-dropdown > ul { + display: flex; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + margin: 0 !important; + padding: 0; + list-style: none; + outline: 0; +} + + +.cbi-dropdown > ul.preview { + display: none; + +} + +.cbi-button-apply > ul.preview { + display: none; + + li { + color: #fff; + } + +} + +.cbi-button-apply > ul:first-child { + li { + color: #fff; + } + +} + +.cbi-dropdown > .open { + flex-basis: 15px; +} + +.cbi-dropdown > .open, +.cbi-dropdown > .more { + font-size: 1rem; + font-weight: 900; + line-height: 1em; + display: flex; + flex-direction: column; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; + padding: 0 .25em; + cursor: default; + text-align: center; + outline: 0; +} + +.cbi-dropdown > .more, +.cbi-dropdown > ul > li[placeholder] { + font-weight: bold; + display: none; + color: #777; + text-shadow: none; +} + +.cbi-dropdown > ul > li { + display: none; + overflow: hidden; + align-items: center; + align-self: center; + flex-grow: 1; + flex-shrink: 1; + min-height: 20px; + padding: 0.125rem .25em; + white-space: nowrap; + text-overflow: ellipsis; + +} + +.cbi-dropdown > ul > li .hide-open { + display: initial; +} + +.cbi-dropdown > ul > li .hide-close { + display: none; +} + +.cbi-dropdown > ul > li[display]:not([display="0"]) { + border-left: thin solid #ccc; +} + +.cbi-dropdown[empty] > ul { + max-width: 1px; +} + +.cbi-dropdown > ul > li > form { + display: none; + margin: 0; + padding: 0; + pointer-events: none; +} + +.cbi-dropdown > ul > li img { + margin-right: .25em; + vertical-align: middle; +} + +.cbi-dropdown > ul > li > form > input[type="checkbox"] { + height: auto; + margin: 0; +} + +.cbi-dropdown > ul > li input[type="text"] { + height: 20px; +} + +.cbi-dropdown[open] > ul.dropdown { + position: absolute; + z-index: 1100; + display: block; + width: auto; + min-width: 100%; + max-width: none; + max-height: 200px !important; + border: 0 solid #918e8c; + background: #ffffff; + box-shadow: 0 0 4px #918e8c; + border-bottom-left-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + color: var(--main-menu-color); + margin-left: -0 !important; + left: 0; + + li { + color: #000; + } +} + + +.cbi-dropdown > ul > li[display], +.cbi-dropdown[open] > ul.preview, +.cbi-dropdown[open] > ul.dropdown > li, +.cbi-dropdown[multiple] > ul > li > label, +.cbi-dropdown[multiple][open] > ul.dropdown > li, +.cbi-dropdown[multiple][more] > .more, +.cbi-dropdown[multiple][empty] > .more { + display: flex; + align-items: center; + flex-grow: 1; + +} + +.cbi-dropdown[empty] > ul > li, +.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], +.cbi-dropdown[multiple][open] > ul.dropdown > li > form { + display: block; +} + +.cbi-dropdown[open] > ul.dropdown > li .hide-open { + display: none; +} + +.cbi-dropdown[open] > ul.dropdown > li .hide-close { + display: initial; +} + +.cbi-dropdown[open] > ul.dropdown > li { + border-bottom: thin solid #ccc; + padding: 0.5rem 0.8rem; +} + +.cbi-dropdown[open] > ul.dropdown > li label { + margin-left: 0.5rem; +} + +.cbi-dropdown[open] > ul.dropdown > li[selected] { + background: #e4e9ee; +} + +.cbi-dropdown[open] > ul.dropdown > li.focus { + background: #e4e9ee; + outline: none; +} + +.cbi-dropdown[open] > ul.dropdown > li:last-child { + margin-bottom: 0; + border-bottom: 0; +} + +.cbi-dropdown[open] > ul.dropdown > li[unselectable] { + opacity: .7; +} + +.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child { + width: 100%; +} + +.cbi-dropdown[disabled] { + pointer-events: none; + opacity: .6; +} + +.cbi-dropdown .zonebadge { + width: 100%; +} + +.cbi-dropdown[open] .zonebadge { + width: auto; +} + +/* progressbar */ +.cbi-progressbar { + position: relative; + display: flex; + width: 100%; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.5rem; + height: 1rem; + overflow: hidden; + + & > div { + display: block; + position: absolute; + height: 100%; + background-color: var(--bar-bg); + border-radius: 0.5rem; + transition: width 0.3s; + } + + &::after { + content: attr(title); + position: absolute; + font-size: 0.75rem; + color: var(--bs-heading-color); + width: 100%; + height: 100%; + text-align: center; + line-height: 1rem; + z-index: 2; + } +} + +#modal_overlay { + position: fixed; + z-index: 900; + top: 0; + right: 10000px; + bottom: 0; + left: -10000px; + overflow-y: scroll; + transition: opacity .125s ease-in; + opacity: 0; + background: rgba(0, 0, 0, .7); + -webkit-overflow-scrolling: touch; +} + +.modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 90%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + margin: 5em auto; + padding: 1rem; + border-radius: 0.25rem !important; + background: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + + & > * { + line-height: normal; + flex-basis: 100%; + margin-bottom: .5em; + max-width: 100%; + } + + & > pre, + & > textarea { + font-size: 1rem; + font-size-adjust: .35; + overflow: auto; + margin-bottom: .5em; + padding: 8.5px; + cursor: auto; + white-space: pre-wrap; + color: #eee; + outline: 0; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + & > h4 { + display: block; + flex-grow: 1; + max-width: none; + padding: 1rem; + margin: -1rem -1rem 0 -1rem; + font-size: 1rem; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + border-radius: 0.25rem 0 0 0.25rem; + } + + h5 { + margin-top: 1rem; + font-weight: 600; + } + + label > input[type="checkbox"] { + top: 0; + } + + ul { + margin-left: 2.2em; + + &:not(.cbi-tabmenu) { + margin-top: 1rem; + } + + li { + list-style-type: square; + color: #808080; + } + } + + p { + word-break: break-word; + margin-top: 1rem; + } + + .label { + font-size: .6rem; + font-weight: normal; + padding: .1rem .3rem; + padding-bottom: 0; + cursor: default; + border-radius: 0; + } + + .label.warning { + background-color: #f0ad4e !important; + } + + .btn { + padding: 0.45rem 0.8rem; + } + + &.cbi-modal { + max-width: 90%; + max-height: none; + } +} + + +body.modal-overlay-active { + overflow: hidden; + height: 100vh; +} + +body.modal-overlay-active #modal_overlay { + right: 0; + left: 0; + opacity: 1; +} + + +.spinning { + position: relative; + padding-left: 32px !important; +} + +.spinning::before { + position: absolute; + top: 0; + bottom: 0; + + left: .2em; + width: 32px; + content: ""; + background: url(/luci-static/resources/icons/loading.gif) no-repeat center; + background-size: 16px; +} + +#view { + border-radius: 0.25rem; + overflow: hidden; + + & > .spinning { + position: fixed; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + padding: 1rem; + border-radius: 0.5rem; + background: #ffffff; + box-shadow: 0 0 1rem 0 rgba(136, 152, 170, .15); + } +} + +/* luci */ +.hidden { + display: none; +} + +.left, +.left::before { + text-align: left !important; +} + +.right, +.right::before { + text-align: right !important; +} + +.center, +.center::before { + text-align: center !important; +} + +.top { + align-self: flex-start !important; + vertical-align: top !important; +} + +.bottom { + align-self: flex-end !important; + vertical-align: bottom !important; +} + +.inline { + display: inline; +} + +.cbi-page-actions { + padding: 1rem; + text-align: right; + justify-content: flex-end; +} + +.cbi-page-actions > form[method="post"] { + display: inline-block; +} + +.th[data-type="button"], +.td[data-type="button"], +.th[data-type="fvalue"], +.td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; +} + +.ifacebadge { + display: inline-flex; + align-items: center; + gap: .2rem; + padding: .25rem .8rem; + + background: #eee; + border-radius: 4px; +} + +td > .ifacebadge, +.td > .ifacebadge { + font-size: .875rem; + background-color: #f0f0f0; +} + +.ifacebadge > em, +.ifacebadge > img { + display: inline-block; + margin: 0 0.75rem; +} + +.ifacebadge > img + img { + margin: 0 .2rem 0 0; +} + +.network-status-table { + display: flex; + flex-wrap: wrap; + + .ifacebox { + flex-grow: 1; + border-radius: .25rem; + overflow: hidden; + margin: 1rem; + } + + .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; + gap: 0.5em; + + > span { + flex: 10 10 auto; + } + + > div { + display: flex; + flex-wrap: wrap; + gap: .5rem; + height: 100%; + } + + .ifacebadge { + align-items: center; + flex: 1 1 auto; + min-width: 220px; + padding: .5em; + background-color: #fff; + + > span { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + } +} + +/* textarea */ +.cbi-input-textarea { + font-family: inherit; + width: 100%; + font-size: 0.875rem; + min-height: 14rem; + padding: .8rem; + color: #8898aa; + border-radius: 0.25rem; + border: 1px solid #dee2e6; + min-width: 16rem; +} + +#content_syslog { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} + +#syslog { + font-size: small; + font-family: 'Google Sans'; + line-height: 1.25; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + color: #242424; + border: 0; + border-radius: 0.25rem; + background-color: #ffffff; + +} + +#syslog:focus { + outline: 0; +} + +/* config changes */ +.uci-change-list { + font-family: inherit; + overflow: scroll; + width: 100%; + display: flex; + flex-direction: column; + flex-wrap: wrap; +} + +.uci-change-list ins, +.uci-change-legend-label ins { + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #0f0; + background-color: #cfc; +} + +.uci-change-list del, +.uci-change-legend-label del { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #f00; + background-color: #fcc; +} + +.uci-change-list var, +.uci-change-legend-label var { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #ccc; + background-color: #eee; +} + +.uci-change-list var ins, +.uci-change-list var del { + font-style: normal; + padding: 0; + white-space: pre; + border: 0; +} + +.uci-change-legend { + padding: 5px; +} + +.uci-change-legend-label { + float: left; + width: 150px; +} + +.uci-change-legend-label > ins, +.uci-change-legend-label > del, +.uci-change-legend-label > var { + display: block; + float: left; + width: 10px; + height: 10px; + margin-right: 4px; +} + +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + line-height: .4; + border: 0; +} + +.uci-change-list var, +.uci-change-list del, +.uci-change-list ins { + padding: .5rem; +} + +.uci-dialog { + .cbi-section { + padding: 0.5rem; + + .uci-change-legend { + line-height: 15px; + padding: 10px 20px 0 20px; + + .uci-change-legend-label { + padding: 0; + margin: 0; + position: relative; + float: none; + display: inline-block; + width: 25%; + + > ins, + > del { + width: 14px; + height: 14px; + } + + > var { + position: relative; + width: 14px; + height: 14px; + + ins, + del { + position: absolute; + left: 2px; + top: 2px; + right: 2px; + bottom: 2px; + } + } + } + } + + .uci-change-list { + overflow: auto; + } + + .uci-change-list + .right { + .btn { + color: #333; + } + + .cbi-dropdown ul:not(.dropdown) { + li { + color: #fff; + } + } + + .cbi-button { + padding: .45rem .8rem; + } + } + } +} + +/* other fix */ +#iwsvg, +#iwsvg2, +#bwsvg { + border: thin solid #d4d4d4 !important; +} + +#iwsvg, +[data-page="admin-status-realtime-bandwidth"] #bwsvg { + border-top: 0 !important; +} + +.ifacebox { + line-height: 1.25; + display: inline-flex; + overflow: hidden; + flex-direction: column; + border-radius: 4px; + min-width: 100px; + background-color: #f9f9f9; + // border-bottom: thin solid #ccc; + // box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px rgba(0, 0, 0, .2); +} + +.ifacebox-head { + padding: .25em; + background: #eee; +} + +.ifacebox-head.active { + background: #5e72e4; + background: var(--primary); + + * { + color: #fff; + color: var(--white); + } + +} + +.ifacebox-body { + padding: 0.875rem 1rem; + line-height: 1.6em; +} + +.cbi-image-button { + margin-left: .5rem; +} + +.zonebadge { + display: inline-block; + padding: .2rem .5rem; + border-radius: 4px; +} + +.zonebadge .ifacebadge { + margin: .1rem .2rem; + padding: .2rem .3rem; + border: thin solid #6c6c6c; +} + +.zonebadge > input[type="text"] { + min-width: 10rem; + margin-top: .3rem; + padding: .16rem 1rem; +} + +.zonebadge > em, +.zonebadge > strong { + display: inline-block; + margin: 0 .2rem; +} + +.cbi-value-field .cbi-input-checkbox, +.cbi-value-field .cbi-input-radio { + margin-top: .1rem; +} + +.cbi-value-field > ul > li { + display: flex; +} + +.cbi-value-field > ul > li > label { + margin-top: .5rem; +} + +.cbi-value-field > ul > li .ifacebadge { + margin-top: -.5rem; + margin-left: .4rem; + background-color: #eee; +} + +.cbi-section-table-row > .cbi-value-field .cbi-dropdown { + min-width: 3rem; +} + +.cbi-section-create { + display: inline-flex; + align-items: center; + padding: .5rem 1rem; +} + + +.cbi-section-remove { + padding: .5rem 1rem; +} + +div.cbi-value var, +td.cbi-value-field var, +.td.cbi-value-field var { + font-style: italic; + color: #0069d6; +} + +.cbi-optionals { + padding: 1rem 1rem 0 1rem; + border-top: thin solid #ccc; +} + +.cbi-dropdown-container { + position: relative; +} + +.cbi-tooltip-container, +span[data-tooltip], +span[data-tooltip] .label { + cursor: help !important; +} + +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + padding: 2px 5px; + transition: opacity .25s ease-out; + white-space: pre; + pointer-events: none; + opacity: 0; + border-radius: 3px; + background: #fff; + box-shadow: 0 0 2px #444; +} + +.cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + transition: opacity .25s ease-in; + opacity: 1; +} + +.zonebadge .cbi-tooltip { + margin: -1.5rem 0 0 -.5rem; + padding: .25rem; + background: inherit; +} + +.zonebadge-empty { + color: #404040; + background: repeating-linear-gradient(45deg, rgba(204, 204, 204, .5), rgba(204, 204, 204, .5) 5px, rgba(255, 255, 255, .5) 5px, rgba(255, 255, 255, .5) 10px); +} + +.zone-forwards { + display: flex; + min-width: 10rem; +} + +.zone-forwards > * { + flex: 1 1 45%; +} + +.zone-forwards > span { + flex-basis: 10%; + padding: 0 .25rem; + text-align: center; +} + +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} + +.label { + font-size: .875rem; + font-weight: bold; + padding: .3rem .8rem; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: #fff !important; + border-radius: 3px; + background-color: #bfbfbf; + text-shadow: none; +} + +label > input[type="checkbox"], +label > input[type="radio"] { + position: relative; + top: .4rem; + right: .2rem; + margin: 0; + vertical-align: bottom; +} + +label[data-index][data-depends] { + padding-right: 2em; +} + +.showSide { + display: none; +} + +.darkMask { + position: fixed; + z-index: 99; + display: none; + width: 100%; + height: 100%; + content: ""; + top: 0; + background-color: rgba(0, 0, 0, .56); + transition: all 0.2s; + + &.active { + display: block; + } +} + +/* diagnostics */ +#diag-rc-output > pre, +#command-rc-output > pre, +[data-page="admin-services-wol"] .notice code { + font-size: 1.2rem; + font-size-adjust: .35; + line-height: normal; + display: block; + overflow-y: hidden; + width: 100%; + padding: 8.5px; + white-space: pre; + color: #eee; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); +} + +[data-page="admin-network-diagnostics"] { + .table { + box-shadow: none; + } + + .cbi-section { + padding: 1rem; + font-family: monospace; + background: #fff !important; + } + + textarea { + background: transparent; + border-radius: 0.25rem; + font-family: 'Google Sans' !important; + color: #8898aa; + border: 1px solid #dee2e6; + padding: 0.5rem; + } + + .tr > .td { + background-color: #fff !important; + border-bottom: 1px solid #dee2e6 !important; + } +} + +input[name="ping"], +input[name="traceroute"], +input[name="nslookup"] { + width: 80%; +} + +/* fix status */ +.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2), +.node-status-processes > .main .table .tr .td:nth-child(3) { + white-space: normal; +} + +div[style*="display:grid;grid-template-columns:repeat"] { + display: flex !important; + justify-content: space-evenly !important; + padding-bottom: 1rem; + flex-wrap: wrap; + font-family: 'Google Sans'; + + .ifacebox { + text-align: center; + flex-basis: 100px; + + .ifacebox-body { + font-size: 0.7rem; + padding: 0.875rem; + + .cbi-tooltip-container { + font-size: inherit !important; + } + } + } +} + +@media screen and (max-width: 484px) { + div[style*="display:grid;grid-template-columns:repeat"] { + .ifacebox { + flex-basis: 80px; + + .ifacebox-body { + padding: 0.875rem 0.5rem; + font-size: 0.6rem; + } + } + } +} + +[data-page="admin-system-attendedsysupgrade"] #view .cbi-button { + margin-left: 0 !important; + margin-top: 1rem !important; +} + +/* fix system reboot */ +[data-page="admin-system-reboot"] { + p { + padding-left: 1.5rem; + } + + p > span { + position: relative; + top: .1rem; + left: 1rem; + } + + .cbi-button { + background: #fb6340 !important; + border-color: #fb6340 !important; + margin-left: 0 !important; + } + + #view > h2:first-child + p { + margin-bottom: 1rem; + } +} + +[data-page="admin-system-poweroff"] { + .container { + h2 + br + p { + margin-bottom: 1rem; + padding-left: 1.5rem; + } + } +} + +[data-page="admin-vpn-passwall"] h4 { + background: transparent; +} + +[data-page="admin-system-filetransfer"] { + + #cbi-upload { + margin-top: 0; + } + + .cbi-section-table { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + } + +} + +/* samba */ +#cbi-samba [data-tab="template"] { + .cbi-value-field { + display: block; + } + + .cbi-value-title { + width: auto; + padding-bottom: .6rem; + } +} + +/* admin-system-admin-password */ +[data-page="admin-system-admin"] .cbi-map h2, +[data-page="admin-system-admin-password"] .cbi-map h2, +[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, +[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { + margin-left: 0; + color: #32325d; + color: var(--gray-dark); +} + +/* admin-system-admin-sshkeys */ +[data-page="admin-system-admin-sshkeys"] { + .cbi-dynlist { + margin-left: 1rem; + } +} + +/* software */ +[data-page="admin-system-opkg"] h2 { + margin-left: 0; + color: #32325d; + color: var(--gray-dark); +} + +[data-page="admin-system-opkg"] input[name="filter_i18n"] { + top: 2px; + vertical-align: text-top; +} + +.controls { + margin: .5em 1rem 1em 1rem !important; +} + +.controls > * > .btn:not([aria-label$="page"]) { + flex-grow: initial !important; + margin-top: .25rem; +} + +.controls > #pager > .btn[aria-label$="page"] { + font-size: 1.4rem; + font-weight: bold; +} + +.controls > * > label { + margin-bottom: .2rem; +} + +[data-page="admin-system-opkg"] div.btn { + line-height: 3; + display: inline; + padding: .3rem .6rem; +} + +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + margin-top: 1rem; + padding-top: .01rem; +} + +[data-page="admin-system-opkg"] #maincontent > .container { + margin: 0 1.25rem 1rem 1.25rem; + margin-bottom: 1rem; +} + +.td.version, +.td.size { + white-space: normal !important; + word-break: break-word; +} + +.cbi-tabmenu + .cbi-section { + margin-top: 0; +} + +/* admin-system-system */ +[data-page="admin-system-system"] { + .control-group { + margin-top: 0.5rem; + } + + .cbi-dynlist { + margin: 0.25rem 0; + } +} + +/* admin-system-startup */ +[data-page="admin-system-startup"] { + [data-tab-title] p { + margin-left: 0; + margin-bottom: 0; + position: relative; + } + + textarea { + line-height: 1.25; + overflow-y: auto; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + color: #8898aa; + border-radius: 0.25rem; + border: 1px solid #dee2e6; + + &:focus-visible { + outline: none; + box-shadow: none; + border: 1px solid var(--primary); + } + } +} + +/* admin-system-crontab*/ +[data-page="admin-system-crontab"] { + #view p { + margin-bottom: 1rem; + + &:last-child { + margin-bottom: 0; + } + + textarea { + line-height: 1.25; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + background-color: transparent; + background: var(--white); + outline: none; + color: #8898aa; + border-radius: 0.25rem; + border: 1px solid #dee2e6; + } + } +} + +/*admin-system-attendedsysupgrade-configuration*/ +[data-page="admin-system-attendedsysupgrade-configuration"] { + .cbi-map { + .cbi-map-descr { + padding-bottom: 0; + } + } +} + +/*admin-system-flash*/ + +[data-page="admin-system-flash"] { + .cbi-value { + padding: 0 1rem; + } + + .cbi-section { + .cbi-section { + margin-top: 0; + } + } + + .cbi-map-tabbed { + border-radius: 0.25rem; + } + + .cbi-section-node { + padding-top: 0; + padding-bottom: 0.5rem; + } + + legend { + font-size: 1.2rem; + width: 100%; + display: block; + border-bottom: 1px solid rgba(0, 0, 0, .05); + line-height: 1.5; + margin-bottom: 0; + letter-spacing: 0.1rem; + color: #32325d; + font-weight: bold; + padding: 1rem 0 1rem 1rem; + } + + .cbi-section-descr { + font-weight: 600; + padding: 1rem 0 1rem 1rem; + color: #525f7f; + + } + + .cbi-page-actions { + padding: 0rem 1rem 1rem 0rem; + } + + .modal { + + + label > input[type="checkbox"] { + top: -0.25rem; + } + + .btn { + white-space: normal !important; + } + } + + .modal label > input[type="checkbox"] { + vertical-align: text-top; + top: auto; + } +} + +/* wireless overview */ +#cbi-wireless > #wifi_assoclist_table > .tr { + box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; +} + +#cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td { + right: 33px; + bottom: 33px; + left: 33px; + border-top: thin solid #ddd !important; +} + +#cbi-wireless > #wifi_assoclist_table > .tr.table-titles { + box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; +} + +#cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th { + border-bottom: thin solid #ddd; + box-shadow: 0 -1px 0 0 #ddd; +} + +#wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] { + width: 23rem; +} + +[data-page="admin-network-dhcp"] { + .cbi-value { + padding: 0; + + } + + [data-tab-active="true"] { + padding: 1rem 1rem !important; + } +} + +/* firewall */ +#iptables { + margin: 0; +} + +.Firewall form { + margin: 2rem 2rem 0 0; + padding: 0; + box-shadow: none; +} + +#cbi-firewall-redirect table *, +#cbi-network-switch_vlan table *, +#cbi-firewall-zone table * { + font-size: small; +} + +#cbi-firewall-redirect table input[type="text"], +#cbi-network-switch_vlan table input[type="text"], +#cbi-firewall-zone table input[type="text"] { + width: 5rem; +} + +#cbi-firewall-redirect table select, +#cbi-network-switch_vlan table select, +#cbi-firewall-zone table select { + min-width: 3.5rem; +} + +#cbi-network-switch_vlan .th, +#cbi-network-switch_vlan .td { + flex-basis: 12%; +} + +#cbi-firewall-zone .table, +#cbi-network-switch_vlan .table { + display: block; +} + +#cbi-firewall-zone .td, +#cbi-network-switch_vlan .td { + width: 100%; +} + +[data-page="admin-network-firewall-custom"], +[data-page="admin-status-routes"] { + #view { + p { + padding: 0 1.5rem; + margin-bottom: 1rem; + + textarea { + padding: 1rem; + border-radius: 0.25rem; + } + } + + & > h3 { + border-radius: 0.25rem 0.25rem 0 0; + } + } + +} + +/* applyreboot fix */ +#applyreboot-container { + margin: 2rem; +} + +#applyreboot-section { + line-height: 300%; + margin: 2rem; +} + +/* openvpn bug fix */ +.OpenVPN a { + line-height: initial !important; +} + +/* custom commands */ +.commandbox { + width: 24% !important; + margin: 10px 0 0 10px !important; + padding: .5rem 1rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05); +} + +.commandbox h3 { + line-height: normal !important; + overflow: hidden; + margin: 6px 0 !important; + white-space: nowrap; + text-overflow: ellipsis; +} + +.commandbox div { + left: auto !important; +} + +.commandbox code { + position: absolute; + overflow: hidden; + max-width: 60%; + margin-left: 4px; + padding: 2px 3px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.commandbox code:hover { + overflow-y: auto; + max-height: 50px; + white-space: normal; +} + +.commandbox p:first-of-type { + margin-top: -6px; +} + +.commandbox p:nth-of-type(2) { + margin-top: 2px; +} + +[data-page^="admin-system-commands"] .panel-title, +[data-page^="command-cfg"] .mobile-hide, +[data-page^="command-cfg"] .showSide { + display: none; +} + +#command-rc-output .alert-message { + line-height: 1.42857143; + position: absolute; + top: 40px; + right: 32px; + max-width: 40%; + margin: 0; + animation: anim-fade-in 1.5s forwards; + word-break: break-word; + opacity: 0; +} + +@keyframes anim-fade-in { + 100% { + opacity: 1; + } +} + +/* other fix */ +input[type="checkbox"] { + appearance: none !important; + -webkit-appearance: none !important; + border: 1px solid var(--primary); + + width: 16px !important; + height: 16px !important; + padding: 0; + cursor: pointer; + transition: all 0.2s; + margin: 0.75rem 0 0 0; +} + +input[type="checkbox"]:checked { + border: 1px solid #5e72e4; + border: 1px solid var(--primary); + background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; + background-color: #5e72e4; + background-color: var(--primary); + background-size: 70%; + background-repeat: no-repeat; + background-position: center; +} + +.fb-container .cbi-button { + height: auto !important; +} + +#cbi-usb_printer-printer em { + display: block; + padding: 1rem; + text-align: center; +} + +pre.command-output { + padding: 1.5rem; +} + +[data-page="admin-nlbw-display"] .cbi-section[data-tab="export"] { + padding: 1.5rem !important; +} + +[data-page="admin-nlbw-backup"] form { + padding-left: 1.5rem; +} + +[data-page="admin-status-iptables"] .right { + margin-bottom: 0 !important; +} + +[data-page="admin-services-ttyd"] .container { + display: flex; + flex-direction: column; +} + +[data-page="admin-services-ttyd"] #view { + flex: 1; +} + +[data-page="admin-services-ttyd"] #view iframe { + height: 100%; +} + +[data-page="admin-system-fileassistant"] { + .fb-container .panel-title { + padding: .5rem .75rem !important; + } + + .cbi-section.fb-container { + padding: 0.5rem; + } + + .fb-container .panel-container { + border-bottom-color: #dee2e6; + } +} + +[data-page^="admin-services-openclash"] { + .cbi-tabmenu > li { + border-right: none !important; + margin: 0 0.4rem 0 0 !important; + + &:last-child { + margin-right: 0 !important; + } + } + + #tab-content .dom { + padding: 0 1rem 1rem 1rem; + } + + .cbi-input-file { + padding: 0.2813rem; + box-sizing: content-box; + width: 15rem !important; + } + + [id="container.openclash.config.debug"] fieldset { + border: none !important; + padding: 1rem !important; + } + + #diag-rc-output > pre, + #dns-rc-output > pre { + font-size: 0.875rem; + color: #8898aa; + border: 1px solid #dee2e6; + background-color: transparent; + border-radius: 0.25rem; + font-family: 'Google Sans' !important; + box-shadow: none; + } + + #debug-rc-output > textarea { + font-family: 'Google Sans' !important; + } + + .CodeMirror { + font-size: inherit; + font-family: 'Google Sans' !important; + } + + .cbi-button-up, .cbi-button-down { + padding: 0.8rem 1.5rem; + background-color: #f1f1f1; + font-size: 0; + } + + select#CORE_VERSION, + select#RELEASE_BRANCH { + width: auto; + } + + [id="container.openclash.config.version_update"] { + table tr:nth-of-type(n+1) { + + } + } +} + +/* IE hacks */ +@media all and (-ms-high-contrast: none) { + .main > .main-left > .nav > .slide > .menu::before { + top: 30.25%; + } + + .main > .main-left > .nav > li:last-child::before { + top: 20%; + } + + .showSide::before { + top: -12px; + } +} + +@media screen and (max-width: 1600px) { + header > .fill > .container > #logo { + margin: 0 2.5rem 0 .5rem; + } + + .main-left { + width: calc(0% + 13rem); + } + + + .btn:not(button), + .label { + padding: .5rem .75rem; + } + + + .cbi-value-title { + width: 15rem; + padding-right: .6rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"], + .cbi-value textarea { + min-width: 18rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 9rem; + } + + .cbi-input-textarea { + font-size: small; + } + + .node-admin-status > .main fieldset li > a { + padding: .3rem .6rem; + } +} + +@media screen and (max-width: 1366px) { + + + header > .fill > .container { + + cursor: default; + } + + + .main-left { + width: calc(0% + 13rem); + } + + + .tabs > li > a, + .cbi-tabmenu > li > a { + padding: .2rem .8rem; + } + + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + + table { + font-size: .875rem !important; + width: 100% !important; + } + + .table .cbi-input-text { + width: 100%; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 16rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 5.5rem; + } + + .main > .main-left > .nav > li, + .main > .main-left > .nav > li > a, + .main .main-left .nav > li > a:first-child, + .main > .main-left > .nav > .slide > .menu, + .main > .main-left > .nav > li > [data-title="Log_out"] { + font-size: .9rem; + } + + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: .875rem; + } + + #modal_overlay { + top: 0rem; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { + display: block; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), + [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), + [data-page="admin-network-hosts"] .table, + [data-page="admin-network-routes"] .table { + overflow-y: visible; + } + + .commandbox { + width: 32% !important; + } + + .btn:not(button), + .cbi-button { + font-size: 0.875rem; + + } +} + +@media screen and (max-width: 1152px) { + header > .fill > .container > #logo { + display: none; + } + + header > .fill > .container > .brand { + position: relative; + } + + html, + .main { + overflow-y: visible; + } + + .main > .loading > span { + top: 25%; + } + + .main-left { + width: calc(0% + 13rem); + } + + + body:not(.logged-in) .showSide { + visibility: hidden; + width: 0; + margin: 0; + } + + .node-main-login > .main .cbi-value-title { + text-align: left; + } + + .cbi-value-title { + width: 12rem; + padding-right: 1rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"] { + width: 16rem; + min-width: 16rem; + } + + /*.cbi-value input[type="password"],*/ + .cbi-value input[name^="pw"], + .cbi-value input[data-update="change"]:nth-child(2) { + width: 13rem !important; + min-width: 13rem; + } + + #diag-rc-output > pre, + #command-rc-output > pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1rem; + } + + .table { + display: block; + } + + .Interfaces .table { + overflow-x: hidden; + } + + #packages.table { + display: grid; + } + + .tr { + display: flex; + flex-direction: row; + flex-wrap: wrap; + } + + .Overview .table[width="100%"] > .tr { + flex-wrap: nowrap; + } + + .tr.placeholder { + border-bottom: thin solid #ddd; + } + + .tr.placeholder > .td, + #cbi-firewall .tr > .td, + #cbi-network .tr:nth-child(2) > .td, + .cbi-section #wifi_assoclist_table .tr > .td { + border-top: 0; + } + + .th, + .td { + display: inline-block; + align-self: flex-start; + flex: 2 2 10%; + text-overflow: ellipsis; + word-wrap: break-word; + } + + .td select, + .td input[type="text"] { + width: 100%; + word-wrap: normal; + } + + .td [data-dynlist] > input, + .td input.cbi-input-password { + width: calc(100% - 1.5rem); + } + + .td[data-type="button"], + .td[data-type="fvalue"] { + flex: 1 1 12.5%; + text-align: left; + } + + .th.cbi-value-field, + .td.cbi-value-field, + .th.cbi-section-table-cell, + .td.cbi-section-table-cell { + flex-basis: auto; + padding-top: 1rem; + } + + .cbi-section-table-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + .td.cbi-value-field, + .cbi-section-table-cell { + display: inline-block; + flex: 10 10 auto; + flex-basis: 50%; + text-align: center; + } + + .td.cbi-section-actions { + vertical-align: bottom; + } + + .tr.table-titles, + .tr.cbi-section-table-titles, + .tr.cbi-section-table-descr { + display: none; + } + + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: .9rem; + display: block; + flex: 1 1 100%; + border-bottom: thin solid rgba(0, 0, 0, .26); + background: #e9ecef; + } + + .td[data-title], + [data-page^="admin-status-realtime"] .td[id] { + text-align: left; + } + + .td[data-title]::before { + display: block; + } + + .cbi-button + .cbi-button { + margin-left: 0; + } + + .td.cbi-section-actions > * > *, + .td.cbi-section-actions > * > form > * { + margin: 2.1px 3px; + } + + .Firewall form { + position: static !important; + margin: 0 0 2rem 0; + padding: 2rem; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + .Firewall form input { + width: 100% !important; + margin: 0; + margin-top: 1rem; + } + + .Firewall .center, + .Firewall .center::before { + text-align: left !important; + } + + .commandbox { + width: 100% !important; + margin-left: 0 !important; + } + + .btn:not(button), + .cbi-button { + font-size: 0.875rem; + } +} + + +@media screen and (max-width: 768px) { + body { + font-size: .875rem; + } + + .cbi-progressbar::after { + font-size: .6rem; + } + + + .main-left { + position: fixed; + z-index: 100; + width: 0; + + &.active { + width: 13rem; + } + } + + .main-right { + width: 100%; + + &.active { + overflow-y: hidden; + } + } + + .darkMask.active { + display: block; + } + + .showSide { + padding: 0.1rem; + position: relative; + z-index: 99; + display: inline-block !important; + + &::before { + font-family: 'argon' !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e20e"; + font-size: 1.7rem; + } + } + + + header > .fill > .container > .flex1 > .brand { + display: inline-block; + } + + + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.875rem; + } + + +} + +@media screen and (max-width: 600px) { + .mobile-hide { + display: none; + } + + #maincontent > .container { + margin: 0 1rem 1rem 1rem; + } + + .cbi-value-title { + text-align: left; + } + + .cbi-dynlist p { + padding: 0.5rem 1rem; + } + + body { + overflow-x: hidden; + } + + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { + width: 16rem; + } + + .node-main-login footer { + display: none; + } + + .tabs, + .cbi-tabmenu { + &::-webkit-scrollbar { + width: 0px; + height: 0px; + } + } + + .cbi-value-field, + .cbi-value-description { + display: block !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + + [data-page="admin-system-admin-password"] .cbi-value-field { + display: table-cell !important; + } + + .modal.cbi-modal { + max-width: 100%; + max-height: none; + } + + .modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 100%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + margin: 5em auto; + padding: 1em; + border-radius: 3px !important; + background: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + } + + .cbi-dropdown[open] > ul.dropdown { + margin-bottom: 1rem; + } + + .login-page .login-container footer { + display: none; + } +} + + +@media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + + ::-webkit-scrollbar-thumb { + background: var(--primary); + border-radius: 10px; + } + + ::-webkit-scrollbar-thumb:hover { + background: var(--primary); + } + + ::-webkit-scrollbar-thumb:active { + background: var(--primary); + } +} + + +@media screen and (max-width: 480px) { + .mobile-hide { + display: none; + } + + .login-page .login-container { + margin-left: 0rem !important; + width: 100%; + + .login-form { + .form-login { + .input-group { + &::before { + color: #525461; + } + + input { + color: #525461; + border-bottom: white 1px solid; + border-bottom: var(--white) 1px solid; + border-radius: 0; + } + + } + } + } + + } + + +} diff --git a/luci-theme-argon/less/dark.less b/luci-theme-argon/less/dark.less new file mode 100644 index 000000000..0b666b359 --- /dev/null +++ b/luci-theme-argon/less/dark.less @@ -0,0 +1,1154 @@ +// out: ../htdocs/luci-static/argon/css/dark.css, compress: true , sourceMap: false +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2023 Jerryk + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-bootstrap: + * Copyright 2008 Steven Barth + * Copyright 2008 Jo-Philipp Wich + * Copyright 2012 David Menting + * + * MUI: + * https://github.com/muicss/mui + * + * luci-theme-material: + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * + * Licensed to the public under the Apache License 2.0 + */ + + +body { + background: #1e1e1e; + color: #cccccc; +} + +.login-page .login-container { + + .login-form { + background-color: #1e1e1e; + -webkit-backdrop-filter: blur(var(--blur-radius-dark)); + backdrop-filter: blur(var(--blur-radius-dark)); + background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); + + .brand { + color: #adb5bd; + } + + .form-login { + .input-group { + &::before { + color: #adb5bd; + } + + input { + background-color: transparent !important; + color: #adb5bd; + border-bottom: #adb5bd 1px solid !important; + border-radius: 0 !important; + border-top: none !important; + border-left: none !important; + border-right: none !important; + box-shadow: none; + } + + } + + .cbi-button-apply { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + + &:hover, + &:focus { + opacity: 0.9; + } + } + } + } + +} + +header::after { + background-color: #1e1e1e !important; +} + + +.main { + .main-left { + + background-color: #333333 !important; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .15); + + .sidenav-header .brand { + color: #cccccc; + } + + .nav { + .slide { + .slide-menu { + .active { + a { + color: #cccccc; + + &::after { + background-color: #cccccc !important; + } + } + + &::after { + background-color: var(--dark-primary) !important; + } + } + + li { + a { + color: #cccccc; + } + + a:hover { + background: none !important; + } + + &::after { + background-color: var(--dark-primary) !important; + } + } + } + + .menu.active { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + color: #ffffff !important; + + a::after { + background-color: #ffffff !important; + } + } + } + + li { + a { + color: #cccccc !important; + } + + a:hover { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + color: #ffffff !important; + } + + } + } + + + &::-webkit-scrollbar-thumb { + background-color: #252526 !important; + } + + &::-webkit-scrollbar-track { + background-color: #333; + } + } + + .main-right { + background-color: #1e1e1e; + } +} + +h2 { + color: #ccc; + background: #333333; +} + +h3 { + color: #ccc; + border-bottom: 0; + background: #333333; +} + +h4 { + color: #8C6900; +} + +abbr { + color: var(--dark-primary) !important; +} + +a:link, a:visited, a:active { + color: #a5b2ff; +} + + +input:-webkit-autofill { + background-color: #3c3c3c !important; +} + +#channel_graph { + background-color: transparent !important; +} + +.cbi-value-field .cbi-input-apply, +.cbi-button-apply, +.cbi-button-edit { + color: #fff !important; + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + border-color: #483d8b !important; + border-color: var(--dark-primary) !important; +} + + +.cbi-section em { + color: #ccc; +} + +header.bg-primary { + background-color: #1e1e1e !important; +} + +.cbi-map-descr { + color: #ccc; +} + +.cbi-section { + background: none; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) +} + +.panel-title { + color: #ccc; + background-color: #333333; +} + +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tr:nth-of-type(2n) { + background-color: #252526; +} + +table > tbody > tr > td, +table > tfoot > tr > td, +table > thead > tr > td { + color: #cccccc; +} + +fieldset > table > tbody > tr:nth-of-type(2n) { + background-color: #252526; +} + +table > tbody > tr > td, +table > tfoot > tr > td, +table > thead > tr > td { + border-top: 1px solid #252526; +} + +#swaptotal > div > div, +#swapfree > div > div, +#memfree > div > div, +#membuff > div > div, +#conns > div > div, +#memtotal > div > div { + background-color: var(--dark-primary) !important; +} + +#swaptotal > div > div > div > small, +#swapfree > div > div > div > small, +#memfree > div > div > div > small, +#membuff > div > div > div > small, +#conns > div > div > div > small, +#memtotal > div > div > div > small { + color: #ccc !important; +} + +.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last { + line-height: 1.8em; + + div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { + border: 1px solid #999999 !important; + background-color: transparent !important; + + div { + background-color: #ba8b00 !important; + } + } + +} + +table > tbody > tr > th, +table > tfoot > tr > th, +table > thead > tr > th { + background-color: #252526; + border-bottom: black 1px solid !important; +} + +tr > td, +tr > th, +.tr > .td, +.tr > .th, +.cbi-section-table-row::before, +#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { + border-top: 0; +} + +.cbi-rowstyle-2 { + background-color: #1e1e1e; +} + +.cbi-rowstyle-1 { + background-color: #252526; +} + +.cbi-rowstyle-2 .cbi-button-up, +.cbi-rowstyle-2 .cbi-button-down, +body:not(.Interfaces) .cbi-rowstyle-2:first-child { + background-color: rgb(102, 102, 102) !important; +} + +.cbi-section > h3:first-child, +.panel-title, +h3 { + color: #ccc; +} + +h4 { + background-color: #1e1e1f; +} + +.cbi-progressbar { + background: #282a2c; + + div { + background-color: var(--dark-primary) !important; + } +} + +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + background-color: #1e1e1f; +} + +.cbi-button { + color: #ffffff !important; + background-color: #483d8b; + background-color: var(--dark-primary); +} + +.cbi-section-node { + background: none; +} + +abbr { + color: #5e72e4; +} + +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tbody > .tr:nth-of-type(2n) { + background-color: #252526; +} + +#content_syslog { + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) +} + +#syslog { + color: #ccc; + background-color: #1e1e1e; +} + +#iwsvg, +#iwsvg2, +#bwsvg { + overflow: hidden; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); + background-color: #1e1e1e !important; +} + +.tabs { + background-color: #252526; + + li[class~="active"], + li:hover { + cursor: pointer; + color: #ccc !important; + + a { + color: #ccc !important; + } + } +} + +.tabs > li[class~="active"] > a { + color: #ccc; +} + +.tabs > li[class~="active"], +.tabs > li:hover { + border-bottom: 0.18751rem solid #483d8b; + border-bottom: 0.18751rem solid var(--dark-primary); + color: var(--dark-primary) !important; + background-color: #181819; +} + +.cbi-tabmenu > li > a, +.tabs > li > a { + color: #ccc; + + &:hover { + color: #ccc; + } +} + +.cbi-tabmenu > li { + background: #2d2d2d; +} + +.cbi-tabmenu li[class~="cbi-tab"] a { + color: #ccc; +} + +.cbi-tabmenu > li:hover { + color: #ccc; + background: #2d2d2d; + border-bottom: 0.18751rem solid var(--dark-primary) !important; +} + +.cbi-tabmenu > li[class~="cbi-tab"] { + background-color: #181819; + border-bottom: 0.18751rem solid var(--dark-primary) !important; +} + +.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { + background-color: #252526; +} + +.cbi-value-title { + color: #ccc; +} + +select, +input { + color: #ccc; + background-color: transparent !important; + border: 1px solid #252526; + box-shadow: none; +} + + +select:not([multiple="multiple"]):focus, +input:focus { + border-color: #483d8b !important; + border-color: var(--dark-primary) !important; + outline: 0; + +} + +select:not([multiple="multiple"]):focus, +input:not(.cbi-button):focus, +.cbi-dropdown:focus { + border-color: #5e72e4; + border-color: var(--dark-primary) !important; +} + +select { + background-color: #1e1e1e !important; +} + +#cbi-dropbear h2, +#cbi-dropbear .cbi-map-descr, +#cbi-dropbear .cbi-map-descr abbr, +#cbi-rc h2, +#cbi-rc .cbi-map-descr, +#cbi-distfeedconf h2, +#cbi-distfeedconf .cbi-map-descr, +#cbi-customfeedconf h2, +#cbi-customfeedconf .cbi-map-descr, +#cbi-download h2, +#cbi-filelist h2 { + color: #ccc !important; +} + +.cbi-value-field > ul > li .ifacebadge { + background-color: #3c3c3c; +} + +.cbi-section-descr { + color: #ccc; +} + +.cbi-input-textarea { + background-color: #1e1e1e; + color: #ccc; + border: 1px solid #3c3c3c !important; +} + +textarea { + &:focus-visible { + border: 1px solid var(--dark-primary); + } +} + + +.cbi-section-remove:nth-of-type(2n), +.cbi-section-node:nth-of-type(2n) { + background-color: #1e1e1e; +} + +.node-system-packages > .main table tr td:nth-last-child(1) { + color: #ccc; + +} + +.cbi-tooltip { + background-color: var(--primary); + color: #fff; +} + +.ifacebox { + background-color: transparent !important; + border: 1px solid #1e1e1e; +} + +.ifacebox-head { + color: #ccc; + background: #666; +} + +.ifacebox-body { + background-color: #333; +} + +.zonebadge strong { + color: #333; +} + +.zonebadge > .ifacebadge { + background-color: #3c3c3c; +} + +div.cbi-value var, +td.cbi-value-field var { + color: #5e72e4; +} + +#diag-rc-output > pre { + color: #ccc; + background-color: #1e1e1e; +} + +.node-services-vssr .block { + background-color: #3c3c3c !important; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); +} + +.node-services-vssr .block h4 { + color: #ccc !important; +} + +.node-services-vssr .status-bar { + color: #ccc; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); + background-color: #1e1e1e; +} + +.node-services-vssr .cbi-section-table-row { + color: #ccc; + background-color: #3c3c3c !important; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, .35) +} + +.node-services-vssr .cbi-section-table-row.fast { + background: #483d8b !important; + background: var(--dark-primary) !important; + color: #fff; +} + +.node-services-vssr .ssr-button { + color: #ccc; + +} + +.node-services-vssr .incon:nth-child(2) { + border-right: #1e1e1e 1px solid; +} + +#xhr_poll_status > .label.success { + color: #ccc !important; + + background-color: darkolivegreen !important; +} + +.notice { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; +} + +.cbi-input-find, +.cbi-input-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-find, +.cbi-input-reload, +.cbi-button-reload { + color: #fff !important; + background: darkolivegreen !important; + border-color: darkolivegreen !important; +} + +.cbi-button-reset, +.cbi-input-remove { + color: #fff !important; + background-color: darkorange !important; + border-color: darkorange !important; +} + +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit.important, +.cbi-button-apply.important, +.cbi-button-reload.important, +.cbi-button-action.important { + border: 1px #483d8b solid !important; + border: 1px var(--dark-primary) solid !important; +} + +.btn[value="Dismiss"], +.cbi-button[value="Terminate"], +.cbi-button[value="Reset"], +.cbi-button[value="Disabled"], +.cbi-button[onclick^="iface_reconnect"], +.cbi-button[onclick="handleReset(event)"], +.cbi-button-neutral[value="Disable"] { + color: #fff; + border: thin solid darkorange !important; + background-color: darkorange !important; +} + +fieldset[id^="cbi-apply-"] { + background-color: #333333; +} + +#detail-bubble > div { + border: 1px solid #ccc; + background: #252525; +} + +.ifacebox-head.active { + background-color: var(--dark-primary) !important; +} + +header .fill .status span[data-style="active"] { + color: #ccc !important; + background-color: darkolivegreen !important; +} + +#cbi-wireless .td, +#cbi-network .tr:first-child > .td, +.table[width="100%"] > .tr:first-child > .td, +[data-page="admin-network-diagnostics"] .tr > .td, +.tr.table-titles > .th, +.tr.cbi-section-table-titles > .th { + background-color: #252526; + border-bottom: black 1px solid !important; + +} + +.network-status-table .ifacebox-body .ifacebadge { + background-color: #252526; + border-bottom: 0; + box-shadow: none; +} + +td > .ifacebadge, +.td > .ifacebadge { + color: #fff; + background-color: #483d8b; + background-color: var(--dark-primary); + border: 0; +} + +.alert, .alert-message { + background-color: #333; +} + +.alert-message.warning { + background-color: #986400 !important; +} + +.alert.error, .alert-message.error { + background-color: #784f00; +} + +.alert h4, .alert-message h4 { + background-color: #784f00; + color: #ffbf00; +} + +.alert-message [class="btn"] { + background-color: #777777; + color: #ccc; +} + +.uci-dialog { + .cbi-section { + + .uci-change-legend { + + .uci-change-legend-label { + + > ins { + border-color: #00ad00; + background-color: #688668; + } + + > del { + border-color: #c60000; + background-color: #896565; + } + + > var { + background-color: #333; + border-color: #666; + + ins { + background-color: #688668; + } + + del { + background-color: #896565; + } + } + } + } + + .uci-change-list { + > var { + background-color: #333; + border-color: #666; + + del { + background-color: #896565; + } + + ins { + background-color: #688668; + } + } + + > ins { + border-color: #00ad00; + background-color: #688668; + } + + > del { + border-color: #c60000; + background-color: #896565; + } + } + + .uci-change-list + .right { + .btn { + color: #ccc; + } + + .cbi-button { + border: 1px solid #3c3c3c !important; + } + } + } +} + +.btn.danger, +.cbi-section-remove > .cbi-button, +.cbi-button-remove, +.cbi-button-reset, +.cbi-button-negative, +.cbi-button[value="Stop"], +.cbi-button[value="Kill"], +.cbi-button[onclick="reboot(this)"], +.cbi-button-neutral[value="Restart"] { + border: thin solid darkorange !important; + background-color: darkorange !important; +} + +.cbi-section, +.cbi-section-error, +#iptables, +.Firewall form, +#cbi-network > .cbi-section-node, +#cbi-wireless > .cbi-section-node, +#cbi-wireless > #wifi_assoclist_table, +[data-tab-title], +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + background: #1e1e1e !important; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); +} + +div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { + background: transparent !important; +} + +[data-page="admin-system-admin"] .cbi-map h2, +[data-page="admin-system-admin-password"] .cbi-map h2, +[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, +[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { + color: #ccc; +} + +[data-page="admin-system-flash"] { + .modal { + label > input[type="checkbox"] { + top: -0.35rem; + } + + .btn { + white-space: normal !important; + background-color: darkseagreen; + } + + .alert-message { + background-color: transparent !important; + } + + .danger { + border: thin solid darkorange !important; + background-color: darkorange !important; + } + } +} + +.cbi-value input[type="password"] + .cbi-button-neutral { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + border-color: var(--dark-primary) !important; +} + +.btn, +button, +select, +input, +.cbi-dropdown { + border: 1px solid #3c3c3c !important; +} + + +.cbi-dropdown .preview { + color: #ccc; +} + +.cbi-section-table-row { + background-color: #1e1e1e !important; +} + +.modal { + background-color: #1e1e1e; +} + +.cbi-button-positive { + color: #fff !important; + background-color: darkolivegreen !important; +} + +[data-page="admin-system-flash"] legend { + color: #ccc; +} + +.logout:before { + color: #adb5bd !important; +} + +.cbi-dropdown[open] { + border-color: #483d8b !important; + border-color: var(--dark-primary) !important; +} + +.cbi-dropdown[open] > ul.dropdown { + background: #252526 !important; + color: #ffffff !important; + box-shadow: none; + border: 1px solid #3c3c3c !important; + + +} + +.cbi-dropdown[open] > ul.dropdown li { + color: #ffffff; + border-bottom: 1px solid #3c3c3c !important; +} + +.cbi-dropdown[open] > ul.dropdown > li[selected] { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + border-bottom: 1px solid #3c3c3c !important; +} + +.cbi-dropdown[open] > ul.dropdown > li.focus { + background: #483d8b; + background: var(--dark-primary); + outline: none; +} + +.ifacebadge { + background-color: #333333; +} + +.cbi-dynlist > .item > span { + border: 1px solid #3c3c3c !important; +} + +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-action, +.cbi-button[value="Submit"], +.cbi-button[value="Upload"], +.cbi-button[value$="Apply"], +.cbi-button[onclick="addKey(event)"] { + background: #483d8b !important; + background: var(--dark-primary) !important; + border-color: var(--dark-primary) !important; +} + +.btn.primary, +.cbi-page-actions .cbi-button-save, +.cbi-page-actions .cbi-button-apply + .cbi-button-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-positive, +.cbi-button-link, +.cbi-button[value="Enable"], +.cbi-button[value="Scan"], +.cbi-button[value^="Back"], +.cbi-button-neutral[onclick="handleConfig(event)"] { + background: #483d8b; + background: var(--dark-primary); +} + +[data-page="admin-system-opkg"] h2 { + color: #ccc !important; +} + +[data-page="admin-system-startup"] textarea { + color: #ccc; + background-color: transparent; + + &:focus-visible { + border: 1px solid var(--dark-primary); + } +} + +[data-page="admin-network-firewall-custom"] #view p textarea, +[data-page="admin-status-routes"] #view p textarea, +[data-page="admin-system-crontab"] #view p textarea { + color: #ccc; + background-color: transparent; +} + +#view > .spinning { + background: #333333 !important; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03) !important; +} + +@media screen and (min-width: 600px) { + + ::-webkit-scrollbar-thumb { + background: var(--dark-primary); + } + + ::-webkit-scrollbar-thumb:hover { + background: var(--dark-primary); + } + + ::-webkit-scrollbar-thumb:active { + background: var(--dark-primary); + } +} + + +@media screen and (max-width: 480px) { + .node-status-iptables > .main div > .cbi-map > form { + background-color: #1e1e1e; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); + } + + +} + +[data-page="admin-dashboard"] { + .main-right > #maincontent { + .Dashboard { + color: #ccc !important; + + h3 { + color: #ccc; + } + + hr { + border-top: 1px solid rgba(255, 255, 255, 1); + } + + .dashboard-bg { + background-color: #333333; + } + } + + .router-status-info .title img, + .lan-info .title img, + .wifi-info .title img { + filter: invert(90%); + } + + tr { + border-top: thin solid #4d4d4d; + + &:last-child { + border-bottom: thin solid #4d4d4d; + } + } + } +} + +[data-page="admin-system-fileassistant"] { + .fb-container .panel-container { + border-bottom-color: #3c3c3c !important; + } + + .fb-container td[class$="-icon"]::before { + filter: invert(0.7); + } +} + +[data-page^="admin-services-openclash"] { + .cbi-tabmenu::-webkit-scrollbar-thumb { + background-color: #5b5b5b; + } + + .cbi-tabmenu::-webkit-scrollbar-track { + background-color: rgba(60, 60, 60, 0.75); + } + + #tab { + border-color: #3c3c3c; + } + + #diag-rc-output > pre, + #dns-rc-output > pre { + color: #ccc; + border: 1px solid #3c3c3c !important; + background-color: #1e1e1e; + } + + img[src$="arrow-clockwise-light.svg"], + img[src$="wrench-light.svg"], + img[src$="eye-light.svg"] { + filter: invert(0.9); + } +} + +[data-page="admin-network-diagnostics"] { + .cbi-section { + background: #252526 !important; + } + + textarea { + background: transparent; + border-radius: 0.25rem; + color: #ccc; + border: 1px solid #3c3c3c !important; + } + + .tr > .td { + background-color: #252526 !important; + } +} + +[data-page="admin-network-network"] { + .ifacebox-head[style*="--zone-color-rgb: 144, 240, 144"] { + background-color: rgb(73, 126, 73) !important; + color: #ccc !important; + } + + .ifacebox-head[style*="--zone-color-rgb: 240, 144, 144;"] { + background-color: rgb(156, 79, 79) !important; + color: #ccc !important; + } + + .ifacebox-head[style*="--zone-color-rgb: 238, 238, 238;"] { + background-color: #666 !important; + } +} + +[data-page="admin-network-firewall-rules"] { + #cbi-firewall-rule { + .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] { + --zone-color-rgb: 156, 79, 79 !important; + + strong { + color: #ccc !important; + } + } + + .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] { + --zone-color-rgb: 112, 112, 112 !important; + + em { + color: #ccc !important; + } + } + + > table > .cbi-section-table-row[data-title]::before { + background-color: #252526 !important; + } + } +} + +[data-page="admin-network-network"], +[data-page="admin-network-firewall-rules"] { + .cbi-dropdown { + .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] { + --zone-color-rgb: 156, 79, 79 !important; + color: #ccc !important; + + strong { + color: #ccc !important; + } + } + + .zonebadge[style*="--zone-color-rgb:144, 240, 144;"] { + --zone-color-rgb: 73, 126, 73 !important; + color: #ccc !important; + + strong { + color: #ccc !important; + } + } + + .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] { + --zone-color-rgb: 112, 112, 112 !important; + + strong { + color: #ccc !important; + + + span { + color: #ccc !important; + } + } + } + } +} + +.btn { + background-color: rgb(112, 112, 112); + color: #fff; +} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/fonts.css b/luci-theme-argon/less/fonts.less similarity index 99% rename from luci-theme-argon/htdocs/luci-static/argon/css/fonts.css rename to luci-theme-argon/less/fonts.less index 1c24f7082..c264b8749 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/css/fonts.css +++ b/luci-theme-argon/less/fonts.less @@ -1,3 +1,4 @@ +// out: false /** * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template * @@ -19,12 +20,12 @@ * https://github.com/LuttyYang/luci-theme-material/ * * Agron Theme - * https://demos.creative-tim.com/argon-dashboard/index.html + * https://demos.creative-tim.com/argon-dashboard/index.html * * Login background * https://unsplash.com/ * - * Licensed to the public under the Apache License 2.0 + * Licensed to the public under the Apache License 2.0 */ @@ -39,7 +40,10 @@ /* Logo Font */ @font-face { font-family: 'TypoGraphica'; - src: url('../fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'), url('../fonts/TypoGraphica.woff') format('woff'), url('../fonts/TypoGraphica.ttf') format('truetype'), url('../fonts/TypoGraphica.svg#TypoGraphica') format('svg'); + src: url('../fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'), + url('../fonts/TypoGraphica.woff') format('woff'), + url('../fonts/TypoGraphica.ttf') format('truetype'), + url('../fonts/TypoGraphica.svg#TypoGraphica') format('svg'); font-weight: normal; font-style: normal; } diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/pure-min.css b/luci-theme-argon/less/pure-min.less similarity index 99% rename from luci-theme-argon/htdocs/luci-static/argon/css/pure-min.css rename to luci-theme-argon/less/pure-min.less index 81dbb1509..040c34a1f 100644 --- a/luci-theme-argon/htdocs/luci-static/argon/css/pure-min.css +++ b/luci-theme-argon/less/pure-min.less @@ -1,3 +1,4 @@ +// out: false /*! Pure v2.0.3 Copyright 2013 Yahoo! @@ -8,4 +9,4 @@ https://github.com/pure-css/pure/blob/master/LICENSE.md normalize.css v | MIT License | git.io/normalize Copyright (c) Nicolas Gallagher and Jonathan Neal */ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto}.pure-g{letter-spacing:-.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} \ No newline at end of file +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto}.pure-g{letter-spacing:-.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} diff --git a/luci-theme-argon/luasrc/view/themes/argon/footer.htm b/luci-theme-argon/luasrc/view/themes/argon/footer.htm index cdb46bb85..a184ff111 100644 --- a/luci-theme-argon/luasrc/view/themes/argon/footer.htm +++ b/luci-theme-argon/luasrc/view/themes/argon/footer.htm @@ -20,8 +20,8 @@
    @@ -41,6 +41,6 @@ } }) - + - \ No newline at end of file + diff --git a/luci-theme-argon/luasrc/view/themes/argon/footer_login.htm b/luci-theme-argon/luasrc/view/themes/argon/footer_login.htm new file mode 100644 index 000000000..366e2db2c --- /dev/null +++ b/luci-theme-argon/luasrc/view/themes/argon/footer_login.htm @@ -0,0 +1,44 @@ +<%# + Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material Argon Template + + luci-theme-argon + Copyright 2020 Jerrykuku + + Have a bug? Please create an issue here on GitHub! + https://github.com/jerrykuku/luci-theme-argon/issues + + luci-theme-material: + Copyright 2015 Lutty Yang + + Agron Theme + https://demos.creative-tim.com/argon-dashboard/index.html + + Licensed to the public under the Apache License 2.0 +-%> + +<% local ver = require "luci.version" %> + + + + + + + diff --git a/luci-theme-argon/luasrc/view/themes/argon/header.htm b/luci-theme-argon/luasrc/view/themes/argon/header.htm index fe238b7ba..854392f0e 100644 --- a/luci-theme-argon/luasrc/view/themes/argon/header.htm +++ b/luci-theme-argon/luasrc/view/themes/argon/header.htm @@ -5,33 +5,55 @@ Copyright 2020 Jerrykuku Have a bug? Please create an issue here on GitHub! - https://github.com/jerrykuku/luci-theme-argon/issues + https://github.com/jerrykuku/luci-theme-argon/issues - luci-theme-material: + luci-theme-material: Copyright 2015 Lutty Yang - - Agron Theme - https://demos.creative-tim.com/argon-dashboard/index.html + + Argon Theme + https://demos.creative-tim.com/argon-dashboard/index.html Licensed to the public under the Apache License 2.0 -%> <% - local sys = require "luci.sys" + local sys = require "luci.sys" local util = require "luci.util" local http = require "luci.http" local disp = require "luci.dispatcher" + local ver = require "luci.version" local boardinfo = util.ubus("system", "board") local node = disp.context.dispatched - - local fs = require "nixio.fs" + + local fs = require "nixio.fs" local nutil = require "nixio.util" - + local uci = require 'luci.model.uci'.cursor() + -- send as HTML5 http.prepare_content("text/html") - math.randomseed(os.time()) + + math.randomseed(os.time()) + + -- Custom settings + local mode = 'normal' + local dark_css = fs.readfile('/www/luci-static/argon/css/dark.css') + local bar_color = '#5e72e4' + local primary, dark_primary, blur_radius, blur_radius_dark, blur_opacity + if fs.access('/etc/config/argon') then + primary = uci:get_first('argon', 'global', 'primary') + dark_primary = uci:get_first('argon', 'global', 'dark_primary') + blur_radius = uci:get_first('argon', 'global', 'blur') + blur_radius_dark = uci:get_first('argon', 'global', 'blur_dark') + blur_opacity = uci:get_first('argon', 'global', 'transparency') + blur_opacity_dark = uci:get_first('argon', 'global', 'transparency_dark') + mode = uci:get_first('argon', 'global', 'mode') + bar_color = mode == 'dark' and dark_primary or primary + end + + -- Brand name + local brand_name = boardinfo.hostname or "?" -%> @@ -50,17 +72,53 @@ - + - LuCI"> - LuCI"> - - - - - - <% if nixio.fs.access("/etc/dark") then %> - - <% end -%> + + + + + + + + + + + + + + <% if node and node.css then %> <% end -%> @@ -69,137 +127,11 @@ <%=css %> <% end -%> - - - - - + + + + +
    ","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("